.dml_flow (sem problemas com links)
O comando .dml_flow exibe um bloco de código desmontado e fornece links que você pode usar para construir um grafo de fluxo de código.
.dml_flow Start Target
Parâmetros
Começar
O endereço de uma instrução da qual o endereço de destino pode ser acessado.
Alvo
Um endereço no bloco de código a ser desmontado.
Comentários
Considere a pilha de chamadas mostrada no exemplo a seguir.
0: kd> kL
Child-SP RetAddr Call Site
fffff880`0335c688 fffff800`01b41f1c nt!IofCallDriver
fffff880`0335c690 fffff800`01b3b6b4 nt!IoSynchronousPageWrite+0x1cc
fffff880`0335c700 fffff800`01b4195e nt!MiFlushSectionInternal+0x9b8
...
Suponha que você queira examinar todos os caminhos de código desde o início de nt! MiFlushSectionInternal para o bloco de código que contém o endereço de retorno, fffff800`01b3b6b4
. O comando a seguir faz com que você comece.
.browse .dml_flow nt!MiFlushSectionInternal fffff800`01b3b6b4
A saída, na janela Navegador de Comandos, é mostrada na imagem a seguir.
A imagem anterior mostra o bloco de código que contém o endereço de destino, fffff800`01b3b6b4
. Há apenas um link (fffff800`01b3b681
) na parte superior da imagem. Isso indica que há apenas um bloco de código do qual o bloco de código atual pode ser alcançado. Se você clicar no link, verá esse bloco de código desmontado e verá links que permitem explorar ainda mais o grafo de fluxo de código.
Os dois links na parte inferior da imagem anterior indicam que há dois blocos de código que podem ser acessados do bloco de código atual.