收集 IntelliTrace 信息

警告

注意:在 Visual Studio 2010 旗舰版 Service Pack 1 中,默认情况下,在您执行关闭操作后,IntelliTrace 将不再保存 IntelliTrace 日志文件(.iTrace 文件)。 有关保存 Intellitrace 日志文件的信息,请参见本主题中的保存日志文件

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

默认情况下,IntelliTrace 在 Visual Studio 2010 旗舰版中处于启用状态。 实时调试会话期间,IntelliTrace 在后台运行,以自动和不可见的方式收集 IntelliTrace 信息。 利用此信息,可以从实时调试会话切换到使用 IntelliTrace 进行调试,并按照时间顺序逐行调试代码。

默认情况下,IntelliTrace 仅收集并记录所选 IntelliTrace 事件的信息。 默认的收集设置所需的开销最少。 它们不会影响应用程序的运行或使用 Visual Studio 调试器的能力。

通过收集调用和参数,IntelliTrace 可以提供额外的调试功能。 但是,收集调用和参数将增加性能开销、需要使用额外的磁盘空间并会禁用 Visual Studio 调试器的“编辑并继续”功能。 您必须权衡特定应用程序和调试方案的成本和优点。

收集选项是在 Visual Studio 级别设置的。 这些选项适用于所有的 Visual Basic 和 C# 项目和解决方案。 在调试会话和 Visual Studio 会话之间始终保留收集选项。

主题内容

  • 保存日志文件

  • IntelliTrace 事件

  • 调用和参数

  • 按模块配置收集

保存日志文件

默认情况下,在您关闭 Visual Studio 后,IntelliTrace 将不会保存 IntelliTrace 日志文件(.iTrace 文件)。 您可以通过更改默认行为使 IntelliTrace 保存所有日志文件,也可以手动保存 IntelliTrace 日志文件,如下面的过程所述。

更改默认的 IntelliTrace 日志文件行为

  1. 在**“工具”菜单上,单击“选项”**。

  2. 在选项类别列表中,展开**“IntelliTrace”节点,然后单击“高级”**。

  3. 执行以下任务之一:

    1. 如果要保存所有 IntelliTrace 日志文件(.iTrace 文件),则选择**“将 IntelliTrace 记录存储在此目录中”**,然后指定要在其中保存文件的文件夹的路径。

    2. 如果要在您关闭 Visual Studio 时删除 .iTrace 文件(除非您手动保存这些文件),则清除**“将 IntelliTrace 记录存储在此目录中”**。

  4. 单击**“确定”**保存更改。

手动保存 IntelliTrace 日志文件

  1. 单击**“IntelliTrace”窗口工具栏上的“保存当前 IntelliTrace 会话”**按钮。

  2. 在**“另存为”对话框中,指定要将会话保存到其中的文件的名称,然后单击“保存”**。

IntelliTrace 事件

IntelliTrace 事件是您的应用程序运行时发生的事件,这些事件可以通过 IntelliTrace 收集。 IntelliTrace 收集的事件的类型如下所示:

  • 调试器事件。 这些事件是在调试应用程序时在 Visual Studio 调试器内部发生的事件。 应用程序的启动就是一个调试器事件。 其他调试器事件包括停止事件,这些事件是导致您的应用程序进入中断状态的事件。 命中断点、命中跟踪点或执行**“步骤”**命令都是停止事件的示例。

    出于性能原因,IntelliTrace 不收集每个调试器事件的所有可能值, 而只收集对用户可见的值。 例如,如果**“自动”窗口处于打开状态,则 IntelliTrace 收集在“自动”窗口中可见的值。 如果“自动”**窗口处于关闭状态,则不收集这些值。

    如果指向源窗口中的某个变量,则收集数据提示中显示的值。 但是,不会收集固定的数据提示中的值。

  • 异常事件。 如果遇到已经过处理的异常(在引发并捕获异常时)和未经处理的异常,就会发生这些事件。 IntelliTrace 会收集异常类型和异常消息。

  • 框架事件。 这些事件发生在 .NET 库内部。 您可以在**“选项”对话框的“IntelliTrace 事件”页上查看可收集的 .NET 事件的完整列表。 IntelliTrace 收集的数据因事件而异。 对于“文件访问”事件,IntelliTrace 收集文件的名称;对于“检查复选框”**事件,它收集复选框状态和文本;等等。

若要查看已收集的 IntelliTrace 事件的列表,请单击**“IntelliTrace”窗口的“IntelliTrace 事件”**选项卡。 启用 IntelliTrace 后,会始终收集调试器事件。 您不能关闭其收集功能。

默认情况下,会收集最常见的 .Framework 事件。 您可以使用以下过程来选择其他 .NET 事件。 此外,您可以禁用收集任意或所有 .NET 事件。 若要降低**“IntelliTrace”**窗口中的混乱程度,您可能需要禁用收集您不感兴趣的事件。 启用或禁用收集特定事件通常对应用程序性能产生的影响非常小。

选择要记录的 IntelliTrace 事件

  1. 在**“IntelliTrace”窗口工具栏上,单击“打开 IntelliTrace 设置”**图标。

    - 或 -

    1. 在**“工具”菜单上,单击“选项”**。

    2. 在**“选项”对话框中,指向“IntelliTrace”节点,然后单击“常规”**。

  2. 确认选中了**“启用 IntelliTrace”**。

    提示

    清除“启用 IntelliTrace”复选框将会禁用所有自定义设置。

  3. 在**“IntelliTrace”节点下,单击“IntelliTrace 事件”**。

  4. 在**“IntelliTrace 事件”**框中查找您感兴趣的事件类别。

    1. 若要查看单个事件,请单击**“类别”名称旁边的树控件。 例如,可以展开“注册表”**以查看特定的注册表事件(例如 ClosedRegistryKey)。

    2. 若要启用或禁用对整个事件类别的记录,请选中或清除类别名称旁边的复选框。

    3. 若要启用或禁用对某个特定事件的记录,请选中或清除该特定事件名称旁边的复选框。

  5. 单击**“确定”**。

  6. 如果正在调试,必须重新启动调试会话,所做更改才能生效。

调用和参数

如果您在使用 IntelliTrace 进行调试的过程中需要更多信息,可以选择收集有关调用及其参数的信息。 收集调用信息可能会对应用程序性能产生一定影响,并且会增大日志文件的大小。

收集调用信息与 Visual Studio 调试器的“编辑并继续”功能不兼容。 如果您选择收集调用信息,“编辑并继续”会自动被禁用,并且在启用收集调用信息时无法重新启用。

在启用**“IntelliTrace 事件和调用信息”**后,IntelliTrace 会收集每个调用入口点和调用退出点的记录。 在调用入口点,IntelliTrace 收集每个参数的名称和值信息。 对于数组,仅记录前 256 个对象。 对于对象,仅记录结构顶层。 在调用退出点,IntelliTrace 收集方法的返回值。

启用收集调用信息

  1. 在**“选项”对话框中的“IntelliTrace”节点下,单击“常规”**。

  2. 在**“常规”页上,单击“IntelliTrace 事件和调用信息”**。

  3. 单击**“确定”**。

按模块配置收集

对于特定模块,您可以打开或关闭收集 IntelliTrace 信息。 此功能很有用,因为对某些特定模块进行调试毫无意义。 例如,您可能正在对一个包含旧版 DLL 项目的解决方案进行调试,而这些项目已经过全面测试和调试。 排除您不感兴趣的模块可以降低**“IntelliTrace”**窗口中的混乱程度,有利于集中处理感兴趣的代码。 它还可以提高性能并减少日志文件占用的磁盘空间。 如果您选择要收集调用和参数,则差异非常显著。

从选定模块收集数据

  1. 在**“选项”对话框中的“IntelliTrace”节点下,单击“模块”**。

  2. 选择**“从以下模块之外的所有模块收集数据”“仅从以下模块收集数据”**。

    这些设置下面是一个模块名称的列表。

  3. 若要从此列表中移除某个模块,请选择该模块名称,然后单击**“移除”**按钮。

  4. 若要将某个模块添加到此列表中,请执行以下操作:

    1. 单击**“添加”**按钮。

      此时将显示**“添加模式”**对话框。

    2. 在**“输入要匹配的字符串模式”**框中,键入要添加到此列表的模块的名称。 可以在此字符串的开头或结尾使用通配符字符说明符来添加多个模块。

    3. 单击**“添加”**。

    模块名称必须是文件名,而不是程序集名称。 不接受文件路径。

  5. 单击**“确定”**。

    提示

    如果在“常规”页上,集合设置为“仅事件”,则模块设置不起任何作用。

请参见

概念

使用 IntelliTrace 进行调试