Visual Studio で IntelliTrace のデバッグ履歴を使用してアプリを検査します (C#、Visual Basic、C++)
アプリケーションの実行を前後に移動して、その状態を調査するには、デバッグ履歴を使用できます。
IntelliTrace は Visual Studio Enterprise Edition で使用できますが、Professional Edition または Community Edition では使用できません。
デバッグ履歴を使用したコードの移動
バグのあるシンプルなプログラムから始めましょう。 C# コンソール アプリケーションで次のコードを追加します。
static void Main(string[] args)
{
int testInt = 0;
int resultInt = AddIterative(testInt);
Console.WriteLine(resultInt);
}
private static int AddIterative(int j)
{
for (int i = 0; i < 20; i++)
{
j = AddInt(j);
}
return j;
}
private static int AddInt(int add)
{
if (add == 10)
{
return add += 25;
}
return ++add;
}
AddIterative()
を呼び出した後の resultInt
の予想される値が 20 であるものとします (testInt
を 20 回インクリメントした結果)。 また、AddInt()
のバグを確認できないと想定します。 しかし、結果は実際には 44 です。 AddIterative()
を 10 回ステップ実行しないでバグを見つけるにはどうすればよいでしょう。 デバッグ履歴を使うと、迅速かつ簡単にバグを発見できます。 方法は以下のとおりです。
[ツール] > [オプション] > [IntelliTrace] > [全般] で、IntelliTrace が有効になっていることを確認し、[IntelliTrace イベントと呼び出し情報] を選択します。 このオプションを選択しないと、ナビゲーション余白が表示されません (後で説明します)。
Console.WriteLine(resultInt);
の行にブレークポイントを設定します。デバッグを開始します。 コードがブレークポイントまで実行されます。 [ローカル] ウィンドウで、
resultInt
の値が 44 であることを確認できます。[診断ツール] ウィンドウを開きます ([デバッグ] > [診断ツールの表示])。 コード ウィンドウは、次のようになります。
ブレークポイントのすぐ上の左余白の横に双方向矢印が表示されます。 この領域はナビゲーション余白と呼ばれ、履歴デバッグに使用されます。 矢印をクリックします。
コード ウィンドウでは、上記のコード行 (
int resultInt = AddIterative(testInt);
) がピンク色で表示されます。 ウィンドウの上には、現在デバッグ履歴中であることを示すメッセージが表示されます。コード ウィンドウは、次のようになります。
ここで、
AddIterative()
メソッドにステップ インできます (F11 キー、またはナビゲーション余白の [ステップ イン] ボタン)。 次に進みます (F10 キー、またはナビゲーション余白の [次の呼び出しへ移動])。 ピンクの行がj = AddInt(j);
行に移ります。 ここで F10 キーを押しても、次のコード行には移動しません。 代わりに、次の関数呼び出しに移動します。 デバッグ履歴は呼び出しから呼び出しに移動し、関数呼び出しを含まないコード行はスキップされます。ここで、
AddInt()
メソッドにステップ インします。 このコードにバグがあることがすぐにわかります。
関連するコンテンツ
この手順では、デバッグ履歴でできることの表面的な部分のみを見ています。
- デバッグ時にスナップショットを表示するには、IntelliTrace を使用した以前のアプリの状態の調査に関するページを参照してください。
- 他の設定およびナビゲーション余白の他のボタンの効果について詳しくは、「IntelliTrace の機能」をご覧ください。