.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.

Captura de tela da saída .dml-flow na janela Navegador de Comandos.

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.

Confira também

Comandos de linguagem de marcação do depurador

uf (função unasemmble)