WinDbg (クラシック) での呼び出し履歴の表示

呼び出し履歴は、プログラム カウンターの現在の場所に至った関数呼び出しのチェーンです。 呼び出し履歴の最上位の関数は現在の関数、次の関数は現在の関数を呼び出した関数、という具合です。 表示される呼び出し履歴は、レジスタ コンテキストを変更しない限り、現在のプログラム カウンターに基づいています。 レジスタ コンテキストを変更する方法の詳細については、「コンテキストの変更」を参照してください。

WinDbg では、コマンドを入力するか、[呼び出し] ウィンドウを使用して、呼び出し履歴を表示できます。

デバッガー コマンド ウィンドウ

デバッガー コマンド ウィンドウで、k (Display Stack Backtrace) コマンドのいずれかを入力すると、呼び出し履歴を表示できます。

[呼び出し] ウィンドウ

k コマンドの代わりに、[呼び出し] ウィンドウで呼び出し履歴を表示することもできます。 [呼び出し] ウィンドウを開くには、[表示] メニューから [呼び出し履歴] を選択します。

次のスクリーン ショットは、[呼び出し] ウィンドウの例を示しています。

Screenshot of the Calls window in WinDbg.

[呼び出し] ウィンドウのボタンを使用すると、呼び出し履歴のビューをカスタマイズできます。 [ソース] ウィンドウまたは [逆アセンブル] ウィンドウの対応する呼び出し位置に移動するには、呼び出し履歴の行をダブルクリックするか、行を選択して ENTER キーを押します。 このアクションにより、ローカル コンテキストも、選択したスタック フレームに変更されます。 このポイントへの、またはこのポイントからの実行方法の詳細については、「ターゲットの制御」を参照してください。

ユーザー モードでは、スタック トレースは現在のスレッドのスタックに基づいています。 現在のスレッドのスタックの詳細については、「プロセスとスレッドの制御」を参照してください。

カーネル モードでは、スタック トレースは現在のレジスタ コンテキストに基づいています。 特定のスレッド、コンテキスト レコード、またはトラップ フレームに一致するようにレジスタ コンテキストを設定できます。 レジスタのコンテキストの設定の詳細については、「レジスタ コンテキスト」を参照してください。

[呼び出し] ウィンドウには、複数のボタンを含むツール バーと、追加のコマンドを含むショートカット メニューがあります。 このメニューにアクセスするには、タイトル バーを選択して保持 (または右クリック) するか、ウィンドウの右上隅近くのアイコン (Screenshot of the button displaying the Calls window toolbar shortcut menu in WinDbg.

  • 生引数は、 関数に渡される最初の 3 つのパラメーターを表示します。 x86 ベースのプロセッサでは、この表示には、関数に渡される最初の 3 つのパラメーター ("Args to Child") が含まれます。

  • Func info には、フレーム ポインターの省略 (FPO) データと、関数に関するその他の内部情報が表示されます。 このコマンドは、x86 ベースのプロセッサでのみ使用できます。

  • ソース には、関数名の後にソース モジュール名と行番号が表示されます (デバッガーにこの情報がある場合)。

  • Addrs には、さまざまなフレーム関連のアドレスが表示されます。 x86 ベースのプロセッサでは、この表示にはスタック フレーム ("ChildEBP") のベース ポインターとリターン アドレス ("RetAddr") が含まれます。

  • Frame nums はフレーム番号を表示します。 フレームは常に連続して番号付けされ、0 から始まります。

  • Arg types は、スタック内の関数によって予期される引数や受信される引数に関する詳細情報を表示します。

  • Always floating (常にフローティング) を選択すると、ウィンドウがドッキング位置にドラッグされた場合でも、ウィンドウはドッキングされていないままになります。

  • Move with fram (フレームとともに移動) を選択すると、ウィンドウがドッキングされていない場合でも、WinDbg フレームを移動するとウィンドウも移動します。

追加情報

レジスタ コンテキストとローカル コンテキストの設定の詳細については、「コンテキストの変更」を参照してください。