Visual Studio でデバッグを行うときの呼び出し履歴に対するメソッドのマップ
デバッグ中に呼び出し履歴を視覚的にトレースするためのコード マップを作成します。 コメントをマップに追加することでバグの発見に重点を置いてコードの動作を追跡できます。
要件:
デバッグできるコード (Visual C# .NET、Visual Basic .NET、C++、JavaScript など) です。 同じソリューションまたは Microsoft Dynamics AX の X++ コードの複数のアプリで共有されるコードを視覚化するには、Visual Studio 2013 更新プログラム 2 以降であることを確認します。
参照: ビデオ: Debug visually with Code Map debugger integration (コード マップとデバッガーの統合により視覚的にデバッグする) (Channel 9) • Map the call stack • Make notes about the code • Update the map with the next call stack • Add related code to the map • Find bugs using the map • Q & A
呼び出し履歴でマップを作成する
デバッグを開始します。 (キーボード: F5)
アプリが中断モードになるか、関数にステップ インした後で、[コード マップ] を選択します (キーボード: Ctrl + Shift + `)。
現在の呼び出し履歴は新しいコード マップ上にオレンジ色で表示されます。
デバッグを継続している間、マップは自動的に更新されます。 「Update the map with the next call stack」を参照してください。
コメントをマップに追加する
コードの動作を追跡するためのコメントを追加します。 コメント内で新しい行を追加するには、Shift + Return キーを押します。
次の呼び出し履歴でマップを更新する
アプリを次のブレークポイントまで実行するか、関数にステップ インします。 マップに新しい呼び出し履歴が追加されます。
関連するコードをマップに追加する
マップを作成できたところで、次の作業に進みます。 Visual C# .NET または Visual Basic .NET で作業している場合は、フィールド、プロパティ、およびその他のメソッドなどの項目を追加して、コードの動作を追跡します。
メソッドをダブルクリックすると、そのコードの定義が表示されます (キーボード: マップでメソッドを選択して F12 キーを押す)。
マップで追跡する項目を追加します。
ここでは、同じフィールドを使用するメソッドを簡単に表示できます。 追加された最新の項目は緑色で表示されます。
コードのさらに多くの項目を表示するには、マップの作成を続けます。
マップを使用してバグを見つける
コードの視覚化はバグをよりすばやく見つけるために役立ちます。 たとえば、描画プログラムのバグを調査しているとします。 直線を描画して元に戻そうとしても、別の直線を描画するまで何も起こりません。
そのため、ブレークポイントを設定し、デバッグを開始して、次のようなマップを作成します。
マップ上のすべてのユーザー ジェスチャーが、undo を除いて、Repaint を呼び出していることがわかります。 この動作が原因で undo がすぐに実行されない可能性があります。
バグを修正してプログラムの実行を続けると、マップに undo から Repaint への新しい呼び出しが追加されます。
Q & A
一部の呼び出しがマップに表示されません。 なぜでしょうか。
既定では、ユーザー コードのみマップに表示されます。 外部コードを表示するには、[呼び出し履歴] ウィンドウでそのコードをオンにするか、Visual Studio のデバッグ オプションで [マイ コードのみを有効にする] をオフにします。
マップの変更はコードに影響を与えますか。
マップを変更してもコードは何も影響を受けません。 マップでの名前変更、移動、削除は自由に行うことができます。
"ダイアグラムは古いバージョンのコードに基づいている可能性があります" というメッセージにはどのような意味がありますか。
マップを最後に更新してからコードが変更されている可能性があります。 たとえば、マップ上の呼び出しがコードに存在しなくなった可能性があります。 メッセージを閉じてから、マップを再び更新する前にソリューションをリビルドしてみます。
マップのレイアウトは制御するには、どのようにしますか。
マップのツール バーの [レイアウト] メニューを開きます。
既定のレイアウトを変更します。
マップが自動的に再配置されないようにするには、[Automatic Layout when Debugging] (デバッグ時に自動的にレイアウトする) をオフにします。
項目の追加時にマップが再配置される頻度をできる限り少なくするには、[インクリメンタル レイアウト] をオフにします。
マップを他のユーザーと共有できますか。
マップをエクスポートし、Microsoft Outlook があれば、他のユーザーに送信できます。または、マップを独自のソリューションに保存し、Team Foundation バージョン管理にチェックインできます。
マップに新しい呼び出し履歴が自動的に追加されないようにするには、どのようにしますか。
マップのツール バーで をクリックします。 マップに現在の呼び出し履歴を手動で追加するには、Ctrl + Shift + ` キーを押します。
マップでは引き続き、デバッグ中にマップ上の既存の呼び出し履歴が強調表示されます。
項目のアイコンと矢印にはどのような意味がありますか。
項目に関する詳細情報を確認するには、項目のヒントを参照してください。 また、[凡例] を参照すると、各アイコンの意味を確認できます。
参照: Map the call stack • Make notes about the code • Update the map with the next call stack • Add related code to the map • Find bugs using the map