デバッガーで呼び出し履歴を表示し、[呼び出し履歴] ウィンドウを使用する
[呼び出し履歴] ウィンドウを使用すると、現在呼び出し履歴にある関数呼び出しやプロシージャ呼び出しを表示できます。 [呼び出し履歴] ウィンドウには、メソッドおよび関数が呼び出されている順番が表示されます。 呼び出し履歴は、アプリの実行フローを調査して理解するのに優れた方法です。
デバッグ シンボルが呼び出し履歴の一部で使用できない場合、 [呼び出し履歴] ウィンドウでは、呼び出し履歴のその部分の正しい情報が表示できずに、代わりに次が表示されることがあります。
[Frames below may be incorrect and/or missing, no symbols loaded for name.dll]
Note
実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ここで説明する内容と異なる場合があります。 設定を変更するには、 [ツール] メニューの [設定のインポートとエクスポート] をクリックします。 「すべての設定をリセットする」を参照してください。 [呼び出し履歴] ウィンドウは、Eclipse のような一部の IDE におけるデバッグ パースペクティブに似ています。
デバッガーで呼び出し履歴を表示する
デバッグ中に、[デバッグ] メニューで、[ウィンドウ] > [呼び出し履歴] を選択するか、ctrl
+alt
+C
を押します。
矢印 A は、実行ポインターが現在配置されているスタック フレームを示します。 既定では、このスタック フレームの情報が、ソース、 [ローカル] 、 [自動変数] 、 [ウォッチ] 、 [逆アセンブル] の各ウィンドウに表示されます。 デバッガー コンテキストをスタック上の別のフレームに変更するには、別のスタック フレームに切り替えます。
黄色の矢印は、現在、実行ポインターが存在するスタック フレームを示します。 既定では、このスタック フレームの情報が、ソース、 [ローカル] 、 [自動変数] 、 [ウォッチ] 、 [逆アセンブル] の各ウィンドウに表示されます。 デバッガー コンテキストをスタック上の別のフレームに変更するには、別のスタック フレームに切り替えます。
デバッグ中に呼び出し履歴内の例外スタック フレームを見ることもできます。 詳しくは、例外ヘルパーでの呼び出し履歴の表示に関する記事をご覧ください。
[呼び出し履歴] ウィンドウで非ユーザー コードを表示する
外部コードまたはユーザー以外のコードを表示するには、[外部コードの表示] に切り替え、[呼び出し履歴] ウィンドウを右クリックし、[外部コードの表示] を選択します。
外部コードまたはユーザー以外のコードを表示するには、[呼び出し履歴] ツールバーから [外部コードの表示] ボタンを切り替えるか、[呼び出し履歴] ウィンドウを右クリックして、[外部コードの表示] を選択します。
非ユーザー コードは、[マイ コードのみ] が有効になっていると表示されないコードのことです。 マネージド コードでは、非ユーザー コード フレームは既定で非表示になっています。 非ユーザー コード フレームの代わりに、次の表記が表示されます。
[<External Code>]
別のスタック フレームに切り替える (デバッガー コンテキストを変更する)
[呼び出し履歴] ウィンドウで、表示するコードやデータがあるスタック フレームを右クリックします。
または、 [呼び出し履歴] ウィンドウ内のフレームをダブルクリックして、そのフレームに切り替えることもできます。
[フレームに切り替え] をクリックします。
巻いた尾の付いた緑色の矢印が、選択したスタック フレームの横に表示されます。 実行ポインターは、黄色の矢印でマークされた元のフレームに置かれたままです。 [デバッグ] メニューの [ステップ] または [続行] をクリックすると、選択したフレームではなく、元のフレームで実行が継続されます。
関連するすべてのスレッドを表示する
[すべてのスレッドを表示する] ボタンを切り替えて、[並列スタック] ウィンドウに関連するすべてのスレッドを表示します。
呼び出し履歴の検索
関連する呼び出し履歴フレームを検索するには、呼び出し履歴ウィンドウの左上隅にある検索ボックスに関連する検索語句を入力します。 関連する呼び出し履歴フレームが強調表示されます。
呼び出し履歴上の関数のソース コードを表示する
[呼び出し履歴] ウィンドウで、ソース コードを表示する関数を右クリックし、 [ソース コードへ移動] をクリックします。
[呼び出し履歴] ウィンドウで特定の関数までを実行する
[呼び出し履歴] ウィンドウで、関数を選択して右クリックし、 [カーソル行の前まで実行] を選択します。
関数呼び出しの終了ポイントにブレークポイントを設定する
呼び出し履歴関数にブレークポイントを設定するに関するセクションを参照してください。
別のスレッドとの間の呼び出しを表示する
[呼び出し履歴] ウィンドウを右クリックし、 [他のスレッドの呼び出しを含む] をクリックします。
呼び出し履歴を視覚的にトレースする
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] を選択して、 [オプション] ダイアログ ボックスを閉じます。