デバッグ中に呼び出し履歴を視覚的にトレースするためのコード マップを作成します。 コメントをマップに追加することでバグの発見に重点を置いてコードの動作を追跡できます。
次が必要です。
デバッグできるコード (Visual C#、Visual Basic、C++、JavaScript、X++ など)
参照トピック
-
コード マップを使用するときに使用できるコマンドやアクションの詳細については、「コード マップの参照および再配置」を参照してください。
呼び出し履歴でマップを作成する
デバッグを開始します。 (キーボード: F5 キー)
アプリが中断モードになるか、関数にステップ インした後で、 [コード マップ] を選択します。 (キーボード: Ctrl + Shift + ` キー)
現在の呼び出し履歴は新しいコード マップ上にオレンジ色で表示されます。
デバッグを継続している間、マップは自動的に更新されます。 「次の呼び出し履歴でマップを更新する」を参照してください。
コメントをマップに追加する
コードの動作を追跡するためのコメントを追加します。 コメント内で新しい行を追加するには、Shift+Return キーを押します。
次の呼び出し履歴でマップを更新する
アプリを次のブレークポイントまで実行するか、関数にステップ インします。 マップに新しい呼び出し履歴が追加されます。
関連するコードをマップに追加する
マップを作成できたところで、次の作業に進みます。 C# または Visual Basic で作業している場合は、フィールド、プロパティ、およびその他のメソッドなどの項目を追加して、コードの動作を追跡します。
メソッドのコード定義を表示するには、そのメソッドをダブルクリックするか、そのメソッドのショートカット メニューを使用します。 (キーボード: マップでメソッドを選択して F12 キーを押す)
マップで追跡する項目を追加します。
Note
既定では、マップに項目を追加すると、クラス、名前空間、アセンブリなどの親グループのノードも追加されます。 これは便利ですが、この機能を無効にしてマップをシンプルにしておくこともできます。このためには、マップ ツールバーの [親を含める] ボタンを使用するか、項目を追加するときに Ctrl キーを押します。
ここでは、同じフィールドを使用するメソッドを簡単に表示できます。 追加された最新の項目は緑色で表示されます。
コードのさらに多くの項目を表示するには、マップの作成を続けます。
マップを使用してバグを見つける
コードの視覚化はバグをよりすばやく見つけるために役立ちます。 たとえば、描画プログラムのバグを調査しているとします。 直線を描画して元に戻そうとしても、別の直線を描画するまで何も起こりません。
そのため、clear
、undo
、および Repaint
メソッドにブレークポイントを設定し、デバッグを開始して、次のようなマップを作成します。
マップ上のすべてのユーザー ジェスチャーが、Repaint
を除いて、undo
を呼び出していることがわかります。 これが原因で undo
がすぐに動作しない可能性があります。
バグを修正してプログラムの実行を続けると、マップに undo
から Repaint
への新しい呼び出しが追加されます。
Q & A
一部の呼び出しがマップに表示されません。 なぜですか?
既定では、ユーザー自身のコードだけがマップに表示されます。 外部コードを表示するには、 [呼び出し履歴] ウィンドウでオンにします。
または、Visual Studio のデバッグ オプションで [マイ コードのみを有効にする] をオフにします。
マップの変更はコードに影響を与えますか。
マップを変更してもコードには何の影響もありません。 マップでの名前変更、移動、削除は自由に行うことができます。
"ダイアグラムは古いバージョンのコードに基づいている可能性があります" というメッセージにはどのような意味がありますか。
マップを最後に更新してからコードが変更されている可能性があります。 たとえば、マップ上の呼び出しがコードに存在しなくなった可能性があります。 メッセージを閉じてから、マップを再び更新する前にソリューションをリビルドしてみます。
マップのレイアウトを制御するには、どのようにしますか。
マップのツール バーの [レイアウト] メニューを開きます。
既定のレイアウトを変更します。
マップの自動再配置を停止するには、 [デバッグ時に自動レイアウト] をオフにします。
項目を追加するときのマップの再配置を最小限にするには、 [インクリメンタル レイアウト] をオフにします。
マップを他のユーザーと共有できますか。
マップをエクスポートし、Microsoft Outlook があれば、他のユーザーに送信できます。または、マップを独自のソリューションに保存し、ソース管理にチェックインできます。
マップに新しい呼び出し履歴が自動的に追加されないようにするには、どのようにしますか。
マップ ツール バーの
をクリックします。 マップに現在の呼び出し履歴を手動で追加するには、Ctrl + Shift + ` キーを押します。
デバッグ中は、マップに既存の呼び出し履歴が引き続き強調表示されます。
項目のアイコンと矢印にはどのような意味がありますか。
項目に関する詳細を取得するには、マウス ポインターをその上に移動し、項目のヒントを確認します。 また、 [凡例] を参照すると、各アイコンの意味がわかります。
参照トピック