[呼び出し履歴] ウィンドウを使用すると、現在スタック上にある関数またはプロシージャの呼び出しを表示できます。 呼び出し履歴 ウィンドウには、メソッドと関数が呼び出される順序が表示されます。 呼び出し履歴は、アプリの実行フローを調べて理解するのに適した方法です。
呼び出し履歴の一部で デバッグ シンボル を使用できない場合、[ 呼び出し履歴] ウィンドウでは、呼び出し履歴のその部分の正しい情報を表示できず、代わりに次のように表示されることがあります。
[Frames below may be incorrect and/or missing, no symbols loaded for name.dll]
注
表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによって、ここで説明されているものとは異なる場合があります。 設定を変更するには、 [ツール] メニューの [設定のインポートとエクスポート] をクリックします。 「 すべての設定をリセットする」を参照してください。 呼び出し履歴 ウィンドウは、Eclipse などの一部の IDE のデバッグパースペクティブに似ています。
デバッガーで呼び出し履歴を表示する
デバッグ中に、[ デバッグ ] メニューの [Windows > 呼び出し履歴 ] を選択するか、 ctrl
+alt
+C
を押します。
矢印は、実行ポインターが現在配置されているスタック フレームを識別します。 既定では、このスタック フレームの情報は、ソース ウィンドウ、 ローカル ウィンドウ、 自動変数ウィンドウ、 ウォッチ ウィンドウ、 逆アセンブル ウィンドウに表示されます。 デバッガー コンテキストをスタック上の別のフレームに変更するには、 別のスタック フレームに切り替えます。
黄色の矢印は、実行ポインターが現在配置されているスタック フレームを識別します。 既定では、このスタック フレームの情報は、ソース ウィンドウ、 ローカル ウィンドウ、 自動変数ウィンドウ、 ウォッチ ウィンドウ、 逆アセンブル ウィンドウに表示されます。 デバッガー コンテキストをスタック上の別のフレームに変更するには、 別のスタック フレームに切り替えます。
デバッグ中に呼び出し履歴内の例外スタック フレームを表示することもできます。 詳細については、「 例外ヘルパーで呼び出し履歴を表示する」を参照してください。
[呼び出し履歴] ウィンドウにユーザー以外のコードを表示する
外部コードまたはユーザー以外のコードを表示するには、[ 呼び出し履歴 ] ウィンドウで [外部コードの表示] を右クリックし、[ 外部コードの表示] を選択します。
外部コードまたは非ユーザー コードを表示するには、呼び出し履歴ツール バーから [外部コードの表示 ] ボタンを切り替えるか、[ 呼び出し履歴 ] ウィンドウを右クリックして [ 外部コードの表示] を選択します。
ユーザー以外のコードは、[ マイ コードのみ ] が有効になっている場合に表示されないコードです。 マネージド コードでは、ユーザー以外のコード フレームは既定で非表示になります。 ユーザー以外のコード フレームの代わりに、次の表記が表示されます。
[<External Code>]
別のスタック フレームに切り替える (デバッガー コンテキストを変更する)
[Call Stack] ウィンドウで、表示したいコードとデータを含むスタックフレームを右クリックします。
または、[ 呼び出し履歴] ウィンドウでフレームをダブルクリックして、そのフレームに切り替えることができます。
[ フレームに切り替える] を選択します。
選択したスタック フレームの横に、緑色の矢印とカーリー テールが表示されます。 実行ポインターは元のフレームに残り、黄色の矢印でマークされたままです。 [デバッグ] メニューから [ステップ] または [続行] を選択した場合、選択したフレームではなく、元のフレームで実行が続行されます。
関連するすべてのスレッドを表示する
[ すべてのスレッドを表示 ] ボタンを切り替えて、[ 並列スタック] ウィンドウ内のすべての関連スレッドを表示します。 [並列スタック] ウィンドウでは、マルチスレッド アプリの呼び出し履歴を視覚化できます。
コールスタック検索
関連する呼び出し履歴フレームを検索するには、呼び出し履歴ウィンドウの左上隅にある検索ボックスに関連する検索語句を入力します。 関連する呼び出し履歴フレームが強調表示されます。
呼び出し履歴上の関数のソース コードを表示する
[呼び出し履歴] ウィンドウで、ソース コードを表示する関数を右クリックし、[ソース コードに移動] を選択します。
[呼び出し履歴] ウィンドウから特定の関数に対して実行する
[呼び出し履歴] ウィンドウで、関数を選択して右クリックし、[カーソルまで実行] を選択します。
関数呼び出しの終了ポイントにブレークポイントを設定する
「呼び出し履歴関数でブレークポイントを設定する」を参照してください。
別のスレッドに対する呼び出しまたは別のスレッドからの呼び出しを表示する
[ 呼び出し履歴 ] ウィンドウを右クリックし、[ 他のスレッドとの間の呼び出しを含める] を選択します。
呼び出し履歴を視覚的にトレースする
Visual Studio Enterprise (のみ) では、デバッグ中に呼び出し履歴のコード マップを表示できます。
[呼び出し履歴] ウィンドウで、ショートカット メニューを開きます。 [ コード マップに呼び出し履歴を表示] を選択します (Ctrl + Shift + `)。
詳細については、「 デバッグ中に呼び出し履歴のメソッドをマップする」を参照してください。
呼び出し履歴上の関数の逆アセンブリ コードを表示する (C#、C++、Visual Basic、F#)
[呼び出し履歴] ウィンドウで、逆アセンブリ コードを表示する関数を右クリックし、[逆アセンブリに移動] を選択します。
表示されるオプションの情報を変更する
[呼び出し履歴] ウィンドウを右クリックし、[<>] をセットするかクリアします。
.NET 外部コードの自動逆コンパイル
Visual Studio 2022 バージョン 17.7 以降では、[呼び出し履歴] ウィンドウで外部コードをダブルクリックすることで、.NET コードを自動コンパイルできます。 詳細については、「のデバッグ中.NET アセンブリからソース コードを生成する」を参照してください。
モジュールのシンボルを読み込む (C#、C++、Visual Basic、F#)
[呼び出し履歴] ウィンドウでは、現在シンボルが読み込まれていないコードのデバッグ シンボルを読み込むことができます。 これらのシンボルには、Microsoft パブリック シンボル サーバーからダウンロードされた .NET シンボルまたはシステム シンボル、またはデバッグしているコンピューター上のシンボル パス内のシンボルを指定できます。
「シンボル (.pdb) ファイルとソース ファイルを指定する」を参照してください。
シンボルを読み込むには
[呼び出し履歴] ウィンドウで、シンボルが読み込まれていないスタック フレームを右クリックします。 フレームは淡色表示になります。
[ シンボルの読み込み ] をポイントし、 Microsoft シンボル サーバー (使用可能な場合) を選択するか、シンボル パスを参照します。
シンボル パスを設定するには
[呼び出し履歴] ウィンドウで、ショートカット メニューから [シンボルの設定] を選択します。
[オプション] ダイアログ ボックスが開き、[シンボル] ページが表示されます。
[シンボルの設定] を選択します。
[ オプション] ダイアログ ボックスで、[フォルダー] アイコンをクリックします。
[ シンボル ファイル (.pdb) の場所 ] ボックスにカーソルが表示されます。
デバッグするコンピューター上のシンボルの場所へのディレクトリ パス名を入力します。 ローカル デバッグとリモート デバッグの場合、これはローカル コンピューター上のパスです。
[OK] を選択して、 [オプション] ダイアログ ボックスを閉じます。