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