.dml_flow (Unasemmble with Links)
La commande .dml_flow affiche un bloc de code désassemblé et fournit des liens que vous pouvez utiliser pour construire un graphique de flux de code.
.dml_flow Start Target
Paramètres
Commencer
Adresse d’une instruction à partir de laquelle l’adresse cible peut être atteinte.
Cible
Adresse dans le bloc de code à désassembler.
Remarques
Considérez la pile des appels présentée dans l’exemple suivant.
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
...
Supposons que vous souhaitiez examiner tous les chemins de code depuis le début de nt ! MiFlushSectionInternal au bloc de code qui contient l’adresse de retour, fffff800`01b3b6b4
. La commande suivante vous permet de démarrer.
.browse .dml_flow nt!MiFlushSectionInternal fffff800`01b3b6b4
La sortie, dans la fenêtre Explorateur de commandes, est illustrée dans l’image suivante.
L’image précédente montre le bloc de code qui contient l’adresse cible, fffff800`01b3b6b4
. Il n’y a qu’un seul lien (fffff800`01b3b681
) en haut de l’image. Cela indique qu’il n’existe qu’un seul bloc de code à partir duquel le bloc de code actuel peut être atteint. Si vous cliquez sur le lien, vous verrez ce bloc de code désassemblé, et vous verrez des liens qui vous permettent d’explorer plus en détail le graphique de flux de code.
Les deux liens en bas de l’image précédente indiquent qu’il existe deux blocs de code accessibles à partir du bloc de code actuel.