次の方法で共有


Visual Studio でデバッグを行うときの呼び出し履歴に対するメソッドのマップ

デバッグ中に呼び出し履歴を視覚的にトレースするためのコード マップを作成します。 コメントをマップに追加することでバグの発見に重点を置いてコードの動作を追跡できます。

Debugging with call stacks on code maps

次が必要です。

呼び出し履歴でマップを作成する

  1. デバッグを開始します。 (キーボード: F5 キー)

  2. アプリが中断モードになるか、関数にステップ インした後で、 [コード マップ] を選択します。 (キーボード: Ctrl + Shift + ` キー)

    Choose Code Map to start mapping call stack

    現在の呼び出し履歴は新しいコード マップ上にオレンジ色で表示されます。

    See call stack on code map

    デバッグを継続している間、マップは自動的に更新されます。 「次の呼び出し履歴でマップを更新する」を参照してください。

コメントをマップに追加する

コードの動作を追跡するためのコメントを追加します。 コメント内で新しい行を追加するには、Shift+Return キーを押します。

Add comment to call stack on code map

次の呼び出し履歴でマップを更新する

アプリを次のブレークポイントまで実行するか、関数にステップ インします。 マップに新しい呼び出し履歴が追加されます。

Update code map with next call stack

関連するコードをマップに追加する

マップを作成できたところで、次の作業に進みます。 C# または Visual Basic で作業している場合は、フィールド、プロパティ、およびその他のメソッドなどの項目を追加して、コードの動作を追跡します。

メソッドのコード定義を表示するには、そのメソッドをダブルクリックするか、そのメソッドのショートカット メニューを使用します。 (キーボード: マップでメソッドを選択して F12 キーを押す)

Go to code definition for a method on code map

マップで追跡する項目を追加します。

Show fields in a method on call stack code map

Note

既定では、マップに項目を追加すると、クラス、名前空間、アセンブリなどの親グループのノードも追加されます。 これは便利ですが、この機能を無効にしてマップをシンプルにしておくこともできます。このためには、マップ ツールバーの [親を含める] ボタンを使用するか、項目を追加するときに Ctrl キーを押します。

Fields related to a method on call stack code map

ここでは、同じフィールドを使用するメソッドを簡単に表示できます。 追加された最新の項目は緑色で表示されます。

コードのさらに多くの項目を表示するには、マップの作成を続けます。

See methods that use a field: call stack code map

Methods that use a field on call stack code map

マップを使用してバグを見つける

コードの視覚化はバグをよりすばやく見つけるために役立ちます。 たとえば、描画プログラムのバグを調査しているとします。 直線を描画して元に戻そうとしても、別の直線を描画するまで何も起こりません。

そのため、clearundo、および Repaint メソッドにブレークポイントを設定し、デバッグを開始して、次のようなマップを作成します。

Add another call stack to code map

マップ上のすべてのユーザー ジェスチャーが、Repaint を除いて、undo を呼び出していることがわかります。 これが原因で undo がすぐに動作しない可能性があります。

バグを修正してプログラムの実行を続けると、マップに undo から Repaint への新しい呼び出しが追加されます。

Add new method call to call stack on code map

Q & A

  • 一部の呼び出しがマップに表示されません。 なぜですか?

    既定では、ユーザー自身のコードだけがマップに表示されます。 外部コードを表示するには、 [呼び出し履歴] ウィンドウでオンにします。

    Display external code using the Call Stack window

    または、Visual Studio のデバッグ オプションで [マイ コードのみを有効にする] をオフにします。

    Show external code using Options dialog

  • マップの変更はコードに影響を与えますか。

    マップを変更してもコードには何の影響もありません。 マップでの名前変更、移動、削除は自由に行うことができます。

  • "ダイアグラムは古いバージョンのコードに基づいている可能性があります" というメッセージにはどのような意味がありますか。

    マップを最後に更新してからコードが変更されている可能性があります。 たとえば、マップ上の呼び出しがコードに存在しなくなった可能性があります。 メッセージを閉じてから、マップを再び更新する前にソリューションをリビルドしてみます。

  • マップのレイアウトを制御するには、どのようにしますか。

    マップのツール バーの [レイアウト] メニューを開きます。

    • 既定のレイアウトを変更します。

    • マップの自動再配置を停止するには、 [デバッグ時に自動レイアウト] をオフにします。

    • 項目を追加するときのマップの再配置を最小限にするには、 [インクリメンタル レイアウト] をオフにします。

  • マップを他のユーザーと共有できますか。

    マップをエクスポートし、Microsoft Outlook があれば、他のユーザーに送信できます。または、マップを独自のソリューションに保存し、ソース管理にチェックインできます。

    Share call stack code map with others

  • マップに新しい呼び出し履歴が自動的に追加されないようにするには、どのようにしますか。

    マップ ツール バーの Button - Show call stack on code map automatically をクリックします。 マップに現在の呼び出し履歴を手動で追加するには、Ctrl + Shift + ` キーを押します。

    デバッグ中は、マップに既存の呼び出し履歴が引き続き強調表示されます。

  • 項目のアイコンと矢印にはどのような意味がありますか。

    項目に関する詳細を取得するには、マウス ポインターをその上に移動し、項目のヒントを確認します。 また、 [凡例] を参照すると、各アイコンの意味がわかります。

    What do icons on the call stack code map mean?

    参照トピック

  • 呼び出し履歴でマップを作成する

  • コードに関するコメントを追加する

  • 次の呼び出し履歴でマップを更新する

  • 関連するコードをマップに追加する

  • マップを使用してバグを見つける