Visual Studio 2008でC#をステップ実行するときにメソッド呼び出し元を見つけるにはどうすればよいですか?
-
22-07-2019 - |
質問
メソッドにブレークポイントを設定した場合、Visual Studio 2008でブレークポイントにヒットしたときにメソッドの呼び出し元を確認するにはどうすればよいですか?
解決
コールスタックウィンドウ(デバッグ、ウィンドウ、コールスタック)を確認します。そこにある各エントリをダブルクリックすると、呼び出しステートメントに移動します。それを右クリックして、外部コード項目と他のスレッドからの呼び出しの表示を有効/無効にすることもできます。
他のヒント
コールスタックにユーザーが設定したブレークポイントで が表示されない場合は、通常、ネイティブコードから呼び出されたことを意味します。
スタックを取得できない別のケース:Debug> Break Allを押し、メインスレッドが待機/スリープ状態にある場合、デバッガーは呼び出しスタックの構築に問題を抱えることがあります。デバッガーは暗黙的な関数評価にメインスレッドを使用すると考えています。
混合モード(ネイティブ&マネージド)コードデバッガーをアタッチ(または起動)してみて、問題が解決するかどうかを確認します。
ブレークポイントに到達すると、コールスタック全体を表示できます。 [デバッグ]メニュー-> [Windows]-> [呼び出しスタック]を選択すると、そのウィンドウを表示できます。
ショートカットAlt + Ctrl + Cで起動することもできます
編集: 関数名を右クリックして、「呼び出し元グラフ」を表示して、メソッドのすべての呼び出し元を表示することもできます。または、[表示]-> [他のウィンドウ]-> [ブラウザを呼び出す]に移動して、ブラウザを呼び出してメソッドの名前を検索することもできます。
[コールスタック]ウィンドウに何も表示されない場合は、間違いがあります。 Rアクションの有名なシーケンスをお勧めします:
- 再試行
- 再コンパイル
- 再起動
- 再インストール:)
ブレークポイントがイベントによって発生する関数内にある場合、呼び出し元への直接のコールスタックがない場合があり、「自分のコードだけ」ではなく、すべてのコードを表示できるようにする必要があります。