在 Visual Studio 中使用 IntelliTrace 历史调试检查应用程序 (C#,Visual Basic、 c + +)
可以使用历史调试向后和向前移动来浏览应用程序的执行情况,以查看其执行状态。
Visual Studio 企业版中可使用 IntelliTrace,但专业版或社区版中无法使用。
使用历史调试浏览代码
让我们从有 Bug 的简单程序开始。 在 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()
中的 Bug)。 但结果实际上是 44。 如何在不单步执行 AddIterative()
10 次的情况下找到 Bug? 可以使用历史调试更快、更轻松地查找 bug。 操作方法如下:
在“工具”>“选项”>“IntelliTrace”>“常规”中,请确保启用了 IntelliTrace,然后选择“IntelliTrace 事件和调用信息”。 如果不选择此选项,则无法看到导航线(如下所述)。
在
Console.WriteLine(resultInt);
行上设置断点。开始调试。 代码执行到断点处。 在“局部变量”窗口中,可以看到
resultInt
的值是 44。打开“诊断工具”窗口(“调试”>“显示诊断工具”)。 代码窗口应如下所示:
你应该在左边距旁边看到一个双箭头,就在断点上方。 此区域称为导航条,用于历史调试。 单击该箭头。
在代码窗口中,应该看待前面的代码行 (
int resultInt = AddIterative(testInt);
) 变为粉红色。 在窗口上方,应该看到一条消息,告知你现在处于历史调试模式中。代码窗口现在如下所示:
现在,可以单步执行
AddIterative()
方法(按 F11 或导航条中的“单步执行”按钮)。 单步前进(按 F10 或导航条中的“转到下一个调用”)。 粉红线现在位于j = AddInt(j);
行。 在这种情况下,按 F10 不会单步执行到下一行代码, 而是会单步执行到下一个函数调用。 历史调试在调用之间移动,并跳过不包含函数调用的代码行。现在单步执行到
AddInt()
方法。 应该立即看到此代码中的 Bug。
相关内容
此过程仅粗略介绍使用历史调试可以完成的事项。
- 若要在调试时查看快照,请参阅使用 IntelliTrace 检查以前的应用状态。
- 要了解有关不同设置和导航线中不同按钮的效果的详细信息,请参阅 IntelliTrace 功能。