调试时使用 IntelliTrace 记录代码执行

若要记录和跟踪在 Visual Studio 旗舰版中使用 IntelliTrace 的代码或应用程序的执行历史记录,则按常规开始调试。 默认情况下,IntelliTrace 已启用并自动记录特定事件和数据,以便您可以更轻松地了解应用程序中所发生的改变。 请参见 通过使用 IntelliTrace 记录代码执行来调试应用

若要确认 IntelliTrace 已启用:

在 Visual Studio 中启用或禁用 IntelliTrace

备注

清除“启用 IntelliTrace”关闭所有自定义 IntelliTrace 设置。这些设置适用于所有项目和解决方案。在调试会话和 Visual Studio 会话之间将始终保留这些选项。

您希望做什么?

  • 仅使用事件进行调试

  • 选择 IntelliTrace 记录的事件

  • 使用事件进行调试并调用信息

  • 控制调用信息 IntelliTrace 记录了多少

  • 保存 IntelliTrace 会话

仅使用事件进行调试

可以尝试使用 IntelliTrace 事件 进行调试以查看是否可以帮助您找到 bug。 IntelliTrace 事件是调试事件、异常、.NET Framework 事件以及其他系统事件。 您可以 启用或禁用特定的事件 来控制 IntelliTrace 记录的事件,但是要在你开始调试之前。

这仅是有关使用 IntelliTrace 事件进行调试的图形概述:

仅 IntelliTrace 事件 - 重现 Bug

仅 IntelliTrace 事件 - 事件详细信息和代码

仅 IntelliTrace 事件 - 找到 Bug

返回页首

这仅是使用 IntelliTrace 事件进行调试的详细步骤:

  1. 按常规方式启动调试。 重现 bug。

    提示

    使“局部变量”“自动”窗口保持打开状态以查看和记录将显示在这些窗口中的值。若要开始调试,请按 F5“调试”菜单,再选择“开始调试”。当开始调试时,如果看不到 IntelliTrace 窗口,在开始调试时,则 IntelliTrace 可能无法启用或窗口可能已关闭。若要打开 IntelliTrace 窗口,请转到“调试”IntelliTrace“IntelliTrace 事件”

  2. 手动中断应用程序的执行。

    提示

    “调试”菜单上或 IntelliTrace 窗口中,选择“全部中断”

    现在,当调试器中断执行,可以看到 IntelliTrace 窗口中的事件的时间顺序列表,在开头处使用第一个事件和结束处使用最后一个事件。

    显示诊断事件的“IntelliTrace”窗口

  3. 在这种情况下,应用程序中断执行之前,查找最符合您重现 bug 的事件。

  4. 选择该事件将扩展其详细信息。

    • 如果源代码可用,则 Visual Studio 将指针移到您可以对其检查的源窗口中的相应的代码。

    • 当发生事件时,若要查看 IntelliTrace 记录的数据,则选择**“相关视图”**链接到查看相应的调试器窗口。

    • 如果事件是一个文件访问事件,则选择路径名链接打开该文件。 如果未提供完整路径名,则通过使用搜索框将显示找到的文件。

  5. 如果未发现 bug,请尝试检查其他事件导致的 bug。 您还可以具有 IntelliTrace 记录调用信息,以便您可以逐句通过函数调用。

返回页首

选择 IntelliTrace 记录的事件

您可以打开或关闭特定 IntelliTrace 事件的记录除 IntelliTrace 始终记录的调试器事件和异常外。

  1. 如果正在调试,请停止调试。 否则,请在选择事件之后重新开始调试。

  2. 转到**“工具”“选项”IntelliTrace“IntelliTrace 事件”**。 选择该事件和记录 IntelliTrace 的事件类别。

    配置 IntelliTrace 事件集合

返回页首

使用事件进行调试并调用信息

如果您必须检查您的应用程序的函数调用顺序来查找 bug,则 IntelliTrace 可以与事件一起记录函数调用。 这使您可以查看调用堆栈历史记录,在您的代码中向后移动和向前移动调用,并查看 IntelliTrace 记录的数据,如函数名,它们的入口和出口,以及某些参数值和返回值。 请参见 通过使用 IntelliTrace 记录代码执行来调试应用

  1. 如果正在调试,请停止调试。 否则,打开调用集合后重新启动调试。

  2. 启用调用集合。

    为 IntelliTrace 配置调用集合

    提示

    这可能会减慢应用程序,并增加您保存到磁盘的任何 IntelliTrace 日志文件的大小(.iTrace文件)。若要获取大多数的调用数据,但要影响最小,仅从感兴趣的那些模块中记录数据。若要更改 .iTrace 文件的最大大小,请转到“工具”“选项”IntelliTrace“高级”

  3. 按常规方式启动调试。 重现 bug。

    提示

    保留“局部变量”“自动”窗口来查看和记录将显示在这些窗口中的值。若要开始调试,请按 F5“调试”菜单,再选择“开始调试”。当开始调试时,如果看不到 IntelliTrace 窗口,在开始调试时,则 IntelliTrace 可能无法启用或窗口可能已关闭。若要打开 IntelliTrace 窗口,请转到“调试”IntelliTrace“IntelliTrace 事件”

  4. 手动中断应用程序的执行。

    提示

    “调试”菜单上或 IntelliTrace 窗口中,选择“全部中断”

  5. 查看最符合您重现该 bug 的位置。 请参阅 仅使用事件进行调试。

  6. 选择该事件将扩展其详细信息。 在**“相关视图”旁边,选择“调用视图”**。

    显示诊断事件的“IntelliTrace”窗口

    现在您可以查看应用程序的调用堆栈历史记录,从开头处使用您的应用程序的根调用和结束处使用当前调用相对于您选择的事件,当前不是实时。

    IntelliTrace 窗口“调用”视图

    缩进到当前调用下,另一个列表显示进行其他函数的当前调用的调用。 缩进列表还显示当前调用的 IntelliTrace 事件。

    备注

    调用显示为灰色,因为 IntelliTrace 不从相应的模块中记录数据。若要查看此数据,IntelliTrace 将从这些模块中收集数据。

  7. 查找遵从您选择的事件的调用。 双击此调用以便您可以单步执行它。

    在**“调用视图”**窗口中,您单步执行的调用现已位于调用堆栈的底部的新的当前调用。 现在缩进列表显示调用和新的当前调用的事件。 源窗口和调试器窗口还会对新的当前调用进行更新。

    提示

    如果只需要查看调用站点,请单击在“调用视图”窗口中的调用而不是双击它。这样会将指针移动到调用站点,但不单步执行调用,以便您仍在当前调用中。

  8. 若要逐句通过调用和事件,则在调用信息可用时,使用导航槽沿着源窗口边缘显示。 如果看不到导航槽,请转到**“工具”“选项”IntelliTrace“高级”。 选择“处于调试模式时显示导航线”**。

    在此处设置调试器上下文

    将调试上下文设置为它将在其中显示的调用时间范围。

    此图标仅会显示在当前调用堆栈的每个框架上。

    返回到调用站点

    移动指针和调试上下文向后移动到已调用的当前函数的所在的时间点。

    如果您在传统的调试模式下,则此命令会令您使用 IntelliTrace 开始进行调试。

    “转到上一个调用或 IntelliTrace 事件”

    移动指针和调试上下文向后移动到上一个调用或事件所在的时间点。

    如果您在传统的调试节点下,则此命令会令您使用 IntelliTrace 开始进行调试。

    单步执行

    移动指针和调试上下文向前移动到当前所选的函数所在的时间点。

    只有在您使用 IntelliTrace 进行调试时,此命令才可用。

    “转到下一个调用或 IntelliTrace 事件”。

    移动指针和调试上下文向前移动到 IntelliTrace 数据存在的下一个调用或事件所在的时间点。

    只有在您使用 IntelliTrace 进行调试时,此命令才可用。

    转到实时模式

    返回到您开始使用 IntelliTrace 进行调试的传统调试。

  9. 若要查找特定的调用实例,请搜索 IntelliTrace 历史记录记录的此调用的实例:

    1. 从调用处创建代码行:

      在 IntelliTrace 调试过程中查找调用实例

      备注

      如果行是方法出口,则不会获得准确结果。

      - 或 -

      从内部调用的函数体:

      1. 确保项目文件包含该函数在 Visual Studio 中打开。

      2. 在函数体中打开快捷菜单。 选择**“在 IntelliTrace 中搜索此方法”**。

    2. 将结果浏览至查找感兴趣的实例。 选择该实例可以同步**“调用视图”**窗口并可以检查该实例的记录数据。

返回页首

控制 IntelliTrace 的调用信息记录了多少

您可以仅下载您感兴趣的模块的 IntelliTrace 记录调用信息。 这也有助于提高应用程序性能。

若要添加多个模块,请在字符串的开始或结尾处使用通配符 *。 对于模块名称,请使用文件名,而不是程序集名称。 不接受文件路径。

为 IntelliTrace 配置模块集合

备注

除外模块仍然可能导致从您不感兴趣的模块中收集数据,如第三方或开放源代码模块。

返回页首

保存 IntelliTrace 会话

以后若要继续会话,请保存该会话作为 IntelliTrace 日志文件(.iTrace文件)。

手动保存会话

在 Visual Studio 中手动保存 IntelliTrace

自动保存会话

自动保存 IntelliTrace 会话

提示

若要节省磁盘空间,请在您不再需要他们时,关闭保存 .iTrace 文件。将保留任何现有的 .iTrace 文件。

Visual Studio 将默认 .iTrace 文件大小限制为 250 MB,因为 IntelliTrace 可以收集大量数据。当文件达到其限制时,Visual Studio 将通过删除最早项为新项留出空间。若要保存的数据大于默认限制,请更改文件的最大记录大小。

当他们自动保存和启用 Visual Studio 宿主进程 (vshost.exe) 时,Visual Studio 将为每个 IntelliTrace 会话创建两个 .iTrace 文件。Visual Studio 将创建一个应用程序的 .iTrace 文件和一个宿主进程的 .iTrace 文件。默认情况下此过程将提高调试性能,启用某些调试功能并打开。

.iTrace 文件包含哪些数据?

.iTrace 文件包含有关异常、线程、Web 请求、测试数据,模块和其他系统信息的详细信息。 当您在 Visual Studio 旗舰版中打开文件、选择项和开始调试时,可以转到文件中的任何事件以在此时检查相关代码和有关应用程序的记录数据。 请参见 使用保存的 IntelliTrace 数据调试应用

若要调试 Microsoft 测试管理器中的测试期间发生的错误和系统崩溃,但很难在开发环境中重现,请尝试配置测试管理器来收集 IntelliTrace 数据。 可以将此数据保存到 .iTrace 文件并将其附加到进一步研究的 Team Foundation Server 工作项。 请参见 分析失败的测试并跟踪 Bug

若要调试发生在您不希望更改该系统配置的错误或系统崩溃,例如生产环境,请尝试使用独立回收器来将 IntelliTrace 数据保存到 .iTrace 文件。 请参见 通过使用 IntelliTrace 独立收集器来收集生成的诊断数据

返回页首

在何处可以获取更多信息?

通过使用 IntelliTrace 记录代码执行来调试应用

通过使用 IntelliTrace 独立收集器来收集生成的诊断数据

使用保存的 IntelliTrace 数据调试应用

博客

Visual Studio ALM + Team Foundation Server(Visual Studio ALM + Team Foundation Server)

论坛

Visual Studio 调试器

指南

使用 Visual Studio 2012 对连续交付进行测试 — 第 6 章:测试工具箱

视频

Channel 9 video: Collecting and analyzing IntelliTrace data for debugging(Channel 9 视频:收集和分析用于调试的 IntelliTrace 数据)