WinDbg でのコール スタックの表示Viewing the Call Stack in WinDbg

呼び出し履歴は、プログラムカウンターの現在の場所に led がある関数呼び出しのチェーンです。The call stack is the chain of function calls that have led to the current location of the program counter. 呼び出し履歴の一番上の関数は、現在の関数、次の関数は、現在の関数を呼び出した関数などになります。The top function on the call stack is the current function, the next function is the function that called the current function, and so on. レジスタコンテキストを変更しない限り、表示される呼び出し履歴は、現在のプログラムカウンターに基づいています。The call stack that is displayed is based on the current program counter, unless you change the register context. レジスタコンテキストを変更する方法の詳細については、「 コンテキストの変更」を参照してください。For more information about how to change the register context, see Changing Contexts.

WinDbg では、コマンドを入力するか、[呼び出し] ウィンドウを使用して、呼び出し履歴を表示できます。In WinDbg, you can view the call stack by entering commands or by using the Calls window.

デバッガーのコマンドウィンドウDebugger Command Window

呼び出し履歴を表示するには、デバッガーコマンドウィンドウで k (スタックバックトレースの表示) コマンドのいずれかを入力します。You can view the call stack by entering one of the k (Display Stack Backtrace) commands in the Debugger Command window.

呼び出しウィンドウCalls Window

Kコマンドの代わりに呼び出し履歴を表示するには、[呼び出し] ウィンドウを使用します。As an alternative to the k command, you can view the call stack in the Calls window. [呼び出し] ウィンドウを開くには、[表示] メニューの [呼び出し履歴] をクリックします。To open the Calls window, choose Call Stack from the View menu.

次のスクリーンショットは、呼び出しウィンドウの例を示しています。The following screen shot shows an example of a Calls window.

[呼び出し] ウィンドウのスクリーンショット

[呼び出し] ウィンドウのボタンを使用すると、呼び出し履歴のビューをカスタマイズできます。Buttons in the Calls window enable you to customize the view of the call stack. ソースウィンドウまたは [逆アセンブル] ウィンドウ内の対応する呼び出し場所に移動するには、呼び出し履歴の行をダブルクリックするか、行を選択して enter キーを押します。To move to the corresponding call location in the Source window or Disassembly window, double-click a line of the call stack, or select a line and press ENTER. この操作により、 ローカルコンテキスト も選択したスタックフレームに変更されます。This action also changes the local context to the selected stack frame. この時点以降の実行の詳細については、「 ターゲットの制御」を参照してください。For more information about running to or from this point, see Controlling the Target.

ユーザーモードでは、スタックトレースは、現在のスレッドのスタックに基づいています。In user mode, the stack trace is based on the stack of the current thread. 現在のスレッドのスタックの詳細については、「 プロセスとスレッドの制御」を参照してください。For more information about the stack of the current thread, see Controlling Processes and Threads.

カーネルモードでは、スタックトレースは現在のレジスタコンテキストに基づいています。In kernel mode, the stack trace is based on the current register context. レジスタコンテキストは、特定のスレッド、コンテキストレコード、またはトラップフレームに一致するように設定できます。You can set the register context to match a specific thread, context record, or trap frame. レジスタコンテキストの設定の詳細については、「 Register context」を参照してください。For more information about setting the register context, see Register Context.

[呼び出し] ウィンドウには、いくつかのボタンを含むツールバーがあり、ショートカットメニューには追加のコマンドがあります。The Calls window has a toolbar that contains several buttons and has a shortcut menu with additional commands. このメニューにアクセスするには、タイトルバーを選択して保持するか (または右クリック)、ウィンドウの右上隅の近くにあるアイコンを選択します (To access this menu, select and hold (or right-click) the title bar or select the icon near the upper-right corner of the window (呼び出しウィンドウツールバーのショートカットメニューを表示するボタンのスクリーンショット).). ツールバーとメニューには、次のボタンとコマンドがあります。The toolbar and menu contain the following buttons and commands:

  • 未処理の引数 は、関数に渡される最初の3つのパラメーターを表示します。Raw args displays the first three parameters that are passed to the function. X86 ベースのプロセッサでは、この表示には、関数に渡される最初の3つのパラメーター ("Args に子") が含まれます。On an x86-based processor, this display includes the first three parameters that are passed to the function ("Args to Child").

  • Func info は、フレームポインターの省略 (FPO) データおよび関数に関するその他の内部情報を表示します。Func info displays Frame Pointer Omission (FPO) data and other internal information about the function. このコマンドは、x86 ベースのプロセッサでのみ使用できます。This command is available only on an x86-based processor.

  • [ソース] 関数名の後にソースモジュール名と行番号が表示されます (デバッガーにこの情報が含まれている場合)。Source displays source module names and line numbers after the function names (if the debugger has this information).

  • Addrs には、さまざまなフレームに関連するアドレスが表示されます。Addrs displays various frame-related addresses. X86 ベースのプロセッサでは、この表示には、スタックフレーム ("ChildEBP") の基本ポインターと、リターンアドレス ("RetAddr") が含まれます。On an x86-based processor, this display includes the base pointer for the stack frame ("ChildEBP") and the return address ("RetAddr").

  • フレーム nums は、フレーム番号を表示します。Frame nums displays frame numbers. フレームには常に0から始まる連番が付けられます。Frames are always numbered consecutively, beginning with zero.

  • Arg 型 は、スタック内の関数によって予期および受信された引数に関する詳細情報を表示します。Arg types displays detailed information about the arguments that are expected and received by the functions in the stack.

  • [フローティング] を指定すると、ドッキング位置にドラッグした場合でもウィンドウがドッキング解除されたままになります。Always floating causes the window to remain undocked even if it is dragged to a docking location.

  • [フレームで移動] ウィンドウがドッキング解除されている場合でも、WinDbg フレームが移動されるとウィンドウが移動します。Move with frame causes the window to move when the WinDbg frame is moved, even if the window is undocked. ドッキングウィンドウ、タブ付きウィンドウ、フローティングウィンドウの詳細については、「 windows の配置」を参照してください。For more information about docked, tabbed, and floating windows, see Positioning the Windows.

追加情報Additional Information

レジスタコンテキストとローカルコンテキストの詳細については、「 コンテキストの変更」を参照してください。For more information about the register context and the local context, see Changing Contexts.