时间旅行调试 - 记录跟踪

带有时钟的时间旅行调试徽标。

本部分介绍如何记录时间旅行调试 (TTD) 跟踪。 可通过两种方法在 WinDbg 中记录跟踪,即启动可执行文件(高级)附加到进程

启动可执行文件(高级)

要启动可执行文件并记录 TTD 跟踪,请执行以下步骤。

  1. 在 WinDbg 中,选择文件>开始调试>启动可执行文件(高级)

  2. 输入要记录的用户模式可执行文件的路径,或选择浏览导航到可执行文件。 有关在 WinDbg 中使用“启动可执行文件”菜单的信息,请参阅 WinDbg - 启动用户模式会话

  3. 选中用时间旅行调试记录进程框,从而在启动可执行文件时记录跟踪。

    启动可执行文件(高级)屏幕中带有开始记录复选框的 WinDbg 屏幕截图。

  4. 如果选择了配置和记录,则可以配置跟踪文件的位置。

    显示浏览按钮和文件路径的“配置记录”对话框的屏幕截图。

  5. 要将记录限制为特定模块,检查“记录执行子集”并键入模块名称。 例如,如果只想记录 notepad.exe 的执行,请在文本框中键入“notepad.exe”。 如果要记录 notepad.exe 和 kernelbase.dll 的执行,请在文本框中键入“notepad.exe,kernelbase.dll”。

    “配置记录”对话框的屏幕截图,其中记录执行子集检查和模块列表文本框。

  6. 选择确定以启动可执行文件并开始记录。

  7. 将显示记录对话框,指示正在记录跟踪。

    “停止和调试”和“取消”按钮的 TTD 记录弹窗的屏幕截图。

  8. 有关记录的信息,请参阅如何记录

附加到进程

要附加到进程并记录 TTD 跟踪,请执行以下步骤。

  1. 在 WinDbg 中,选择文件>开始调试>附加到进程

  2. 选择要跟踪的用户模式进程。 有关在 WinDbg 中使用附加到进程菜单的信息,请参阅 WinDbg - 启动用户模式会话

    WinDbg 的屏幕截图,其中显示了“附加到进程”屏幕中的“开始记录”复选框。

  3. 选中用时间旅行调试记录进程框,从而在启动可执行文件时创建跟踪。

  4. 选择附加以开始记录。

  5. 将显示记录对话框,指示正在记录跟踪。

    “停止和调试”和“取消”选项的 TTD 记录弹窗的屏幕截图。

  6. 有关记录的信息,请参阅如何记录

如何记录

  1. 进程正在被记录,因此需要在此处引发要调试的问题。 可以打开有问题的文件,或在应用中选择特定按钮,引发感兴趣的事件发生。

  2. 当显示记录对话框时,可以:

    • 停止和调试 - 选择此选项将停止记录,创建跟踪文件并打开跟踪文件,以便可以开始调试。
    • 取消 - 选择此选项将停止记录并创建跟踪文件。 稍后可以打开跟踪文件。
  3. 记录完成后,关闭应用或点击停止并调试

    注意

    停止和调试取消都将终止关联的进程。

  4. 记录的应用程序终止时,跟踪文件将被关闭并写入磁盘。 如果程序也崩溃,就会出现这种情况。

  5. 打开跟踪文件时,调试器会自动为跟踪文件编制索引。 通过索引,可以更准确、更快速地查找内存值。 对于较大的跟踪文件,该索引编制过程需要更长的时间。

    ...
    00007ffc`61f789d4 c3              ret
    0:000> !index
    Indexed 1/1 keyframes
    Successfully created the index in 96ms.
    

    注意

    关键帧是用于编制索引的跟踪中的位置。 自动生成关键帧。 较大的跟踪将包含更多关键帧。 为跟踪编制索引时,将显示关键帧数。

  6. 此时将位于跟踪文件的开头,并已准备好在时间上向前和向后移动。

    提示

    使用断点是一种常见方法,用于在感兴趣的某个事件中暂停代码执行。 TTD 的独特之处在于,可以设置断点并及时返回,直到记录跟踪后命中该断点。 在发生问题后检查进程状态以确定断点最佳位置的能力可启用额外的调试工作流。 有关过去使用断点的示例,请参阅时间旅行调试 - 示例应用演练

后续步骤

现在便已记录了 TTD 跟踪,可以重播跟踪或处理跟踪文件,例如与同事共享。 有关详细信息,请参阅这些主题。

时间旅行调试 - 重放跟踪

时间旅行调试 - 使用跟踪文件

时间旅行调试 - 故障排除

时间旅行调试 - 示例应用演练

另请参阅

时间旅行调试 - 概述