.dml_flow (リンクの解除)
.dml_flow コマンドは、逆アセンブルされたコード ブロックを表示し、コード フロー グラフの構築に使用できるリンクを提供します。
.dml_flow Start Target
パラメーター
Start
ターゲット アドレスに到達できる命令のアドレス。
移行先
逆アセンブルするコード ブロック内のアドレス。
解説
次の例に示す呼び出し履歴について考えてみます。
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
...
nt!MiFlushSectionInternalの先頭から、リターンアドレスを含むコードブロックfffff800`01b3b6b4
までのすべてのコードパスを調べたいとする。 次のコマンドを使用して開始します。
.browse .dml_flow nt!MiFlushSectionInternal fffff800`01b3b6b4
コマンドの出力を次の画像に示します。
上の図は、 fffff800`01b3b6b4
ターゲット アドレスを含むコード ブロックを示しています。 画像の上部にはリンク (fffff800`01b3b681
) が 1 つだけあります。 これは、現在のコード ブロックに到達できるコード ブロックが 1 つだけであることを示します。 リンクをクリックすると、そのコード ブロックが逆アセンブルされ、コード フロー グラフをさらに詳しく調べるために使用できるリンクが表示されます。
上の図の下部にある 2 つのリンクは、現在のコード ブロックから到達できる 2 つのコード ブロックがあることを示しています。