使用 IntelliTrace 导航

此主题仅适用于 Visual Studio 2010 旗舰版。

在使用 Visual Studio 调试器时,调试器窗口会显示某个时间点您的应用程序状态的快照。 使用 IntelliTrace 时,您可以查看多个时间点的应用程序状态。 IntelliTrace 会记录调试会话期间内预定义时间点的应用程序状态。

使用 IntelliTrace 进行调试时,可以定位到收集调试信息所在的任意点。 当导航到 IntelliTrace 中的某个新点时,源窗口会显示发生此事件处的源代码。 同时,调试器**“调用堆栈”**窗口和其他调试器窗口会得到更新,以显示发生此事件的上下文。

本主题介绍了使用 IntelliTrace 导航收集的应用程序历史记录的方法。

主题内容

  • IntelliTrace 事件视图

  • 调用视图

  • 导航槽

  • 搜索 IntelliTrace 历史记录

IntelliTrace 事件视图

**“IntelliTrace 事件”视图是“IntelliTrace”窗口中的默认视图,默认情况下与“解决方案资源管理器”“团队资源管理器”**一同停靠。不论何时启用 IntelliTrace 后,都会开始收集 IntelliTrace 事件。 因此,您可以在任何 IntelliTrace 会话期间使用此视图。

“调试历史记录”窗口诊断事件视图

在调试模式中,**“IntelliTrace 事件”视图会显示在调试会话期间 IntelliTrace 收集的所有事件的列表。 收集哪些事件是在“选项”**对话框中指定的。 有关如何指定收集哪些事件的信息,请参见收集 IntelliTrace 信息

定位到发生诊断事件的时间点

  • 在**“IntelliTrace 事件”**视图中,单击要定位到的事件。

    源窗口会显示发生此事件所在点的源代码,指令指针会移动到该点,并且调试器窗口会得到更新,以显示发生此事件的上下文。

调用视图

**“调用”**视图提供了一种分层方式来查看导航调用以及与这些调用关联的 IntelliTrace 事件。

“调试历史记录”窗口反转堆栈视图

与启用 IntelliTrace 时始终收集的 IntelliTrace 事件不同,仅在**“选项”对话框中启用“IntelliTrace 事件和调用信息”**时才会收集调用信息。 有关如何启用此选项的信息,请参见收集 IntelliTrace 信息

显示“调用”视图

  • 在**“IntelliTrace”窗口顶部的工具栏中,单击“显示调用视图”**图标。

**“调用”视图会显示一个调用堆栈,类似于调试器“调用堆栈”窗口的倒转版本。 在“调用堆栈”窗口中,当前调用位于顶部。 在“调用”**视图中,当前调用位于底部。

使用 IntelliTrace 进行调试时,当前调用表示该调用当前处于您正在查看的时间上下文中。 它不必处于真实时间中的当前时刻。

**“调用”**视图以缩进方式排列在当前调用的下面,会显示一个调用列表,这些调用是从当前调用以及与当前调用关联的 IntelliTrace 事件发出的。

从当前调用定位到另一个调用

  • 在以缩进方式排列在当前调用下面的调用列表中,双击想要定位到的调用。

    **“调用”**视图将得到更新,显示您双击的调用现在就是当前调用。 源窗口、指令指针和调试器窗口将得到更新,显示新的当前调用下的应用程序状态。

定位到当前调用内的调用站点

  • 在以缩进方式排列在当前调用下面的调用列表中,单击显示在当前调用下的调用。

    请勿双击此调用。 双击将会导致您导航到此调用而不是调用站点。

    在源窗口中,指令指针会移动到调用站点。 由于您仍在同一调用中,所以**“调用堆栈”**窗口不会发生改变。

定位到当前调用内的 IntelliTrace 事件

  • 单击显示在当前调用下的 IntelliTrace 事件。

    在源窗口中,指令指针会移动到调用站点。

导航槽

导航槽是另一个导航工具,仅在**“选项”对话框中启用“IntelliTrace 事件和调用信息”**时才可用。 导航槽沿着源窗口边缘显示,位于标准调试槽和边距之间。 标准调试槽是垂直条带,显示当前指令指针和断点图标。

您可以在实时调试和使用 IntelliTrace 进行调试过程中使用导航槽。 导航槽的颜色会发生变化,以指示您所处的模式。 实时调试中的默认颜色为浅灰色。 使用 IntelliTrace 进行调试时,默认颜色为深灰色。

默认情况下,会显示导航槽。 但是,如果没有收集方法和参数,如果关闭了 IntelliTrace,或在**“选项”**对话框中禁用了导航槽,则它不会显示出来。 如果关闭了导航槽,并且您要将其重新打开,请参见如何:启用或禁用导航线

导航滚动条槽

导航槽包含以下导航图标,如上图所示。 请注意,**“返回到调用站点”“单步执行”是等效但方向相反的命令,与“转到上一个事件”“转到下一个事件”**一样。

  • **“返回到调用站点”**会将指令指针和调试上下文向后移动到调用当前函数或方法所在的时间点。 如果您在实时调试模式下工作,则此命令会令您使用 IntelliTrace 开始进行调试。

  • **“单步执行”**会将指令指针和调试上下文向前移动到当前突出显示的函数所在的时间点。 只有在您使用 IntelliTrace 进行调试时,此命令才可用。 **“单步执行”“返回到调用站点”**的移动方向相反。

  • **“转到上一个调用或 IntelliTrace 事件”**会将指令指针和调试上下文向后移动到上一个调用或事件所在的时间点。 如果您在实时调试下工作,则此命令会令您使用 IntelliTrace 开始进行调试。

  • **“转到下一个调用或 IntelliTrace 事件”**会将指令指针和调试上下文向前移动到存在 IntelliTrace 数据的下一个调用或事件所在的时间点。 只有在您使用 IntelliTrace 进行调试时,此命令才可用。

  • **“转到实时模式”**可让您在开始使用 IntelliTrace 进行调试的点返回到实时调试。

  • **“在此处设置调试器上下文”**会显示在当前调用堆栈的每个框架上。 单击它可将调试上下文设置为它将在其中显示的调用框架

还可以从嵌套在**“调试”菜单下的“IntelliTrace”菜单或从“IntelliTrace”工具栏(如果选择显示)访问这些图标(“设置调试器上下文”**除外)。 **“设置调试器上下文”**仅显示在导航槽中。

搜索 IntelliTrace 历史记录

在启用了**“IntelliTrace 事件和调用信息”**后,IntelliTrace 允许您搜索任何记录的调用实例。 在找到您感兴趣的实例时,您可以将 IntelliTrace 上下文同步到该调用,然后使用 IntelliTrace 窗口和普通调试器窗口来观察该调用实例过程中您的应用程序的状态。

有两种方法可用来搜索调用实例。 一种方法是单击发出调用所在的源代码行。 另一种是通过在被调用的方法或函数主体内单击。

查找调用实例

  1. 在源代码窗口中,

    • 在发出调用所在的代码行上右击,然后单击**“在 IntelliTrace 中搜索此行”**,或者

    • 在方法或函数的主体内右击,然后单击**“在 IntelliTrace 中搜索此方法”**。

    搜索结果将显示在源窗口顶部的一个水平槽中,如下图所示。 搜索结果会指出在 IntelliTrace 中找到多少个实例。

  2. 在搜索结果槽中,通过单击**“转到下一个结果”“转到最后一个结果”“转到上一个结果”“转到第一个结果”**导航结果。

    当您在搜索结果槽中定位到某个调用实例时,**“IntelliTrace”窗口的“调用”**视图会自动同步到该调用实例。

下面介绍了一些您应了解的搜索限制:

  • 除非包含方法的项目文件已在 Visual Studio 中打开,否则**“在 IntelliTrace 中搜索此方法”**不起作用。

  • 如果行是方法出口,则**“在 IntelliTrace 中搜索此行”**不会返回准确结果。

请参见

任务

如何:启用或禁用导航线

概念

收集 IntelliTrace 信息

使用 IntelliTrace 加快代码调试

使用 IntelliTrace 调试非可重现错误