跟踪会话

跟踪会话跟踪提供程序生成跟踪消息的时间段。 系统为跟踪会话维护一组缓冲区,以存储跟踪消息,直到这些消息 (“刷新”) 传递到 跟踪日志跟踪使用者

有三种基本类型的跟踪会话:跟踪日志会话、实时跟踪会话和缓冲跟踪会话。 单个跟踪会话可以是跟踪日志会话和/或实时跟踪会话。 缓冲跟踪会话是独占的。

此外,还有专用跟踪会话和保留跟踪会话,例如 NT 内核记录器跟踪会话全局记录器跟踪会话,它们可以作为日志会话或实时会话运行。 可以使用标准工具来控制这些会话并显示生成的跟踪消息。

跟踪日志会话

跟踪日志会话中,跟踪消息以二进制格式从跟踪缓冲区写入日志文件。 这是标准的默认跟踪会话类型。

实时跟踪会话

实时跟踪会话中,跟踪消息将直接传递到跟踪使用者(如 TraceViewTracefmt),而不是或者发送到日志文件。

缓冲跟踪会话

缓冲跟踪会话中,跟踪消息保留在跟踪缓冲区中;它们不会写入 跟踪日志 或传递给 跟踪使用者。 缓冲区像循环文件一样维护。 当它已满时,最新的跟踪消息将覆盖缓冲区中最早的跟踪消息。

缓冲跟踪会话仅在 Windows Vista 和更高版本的 Windows 上受支持。

尽管软件跟踪通常产生的开销很小,但缓冲跟踪会话在所有跟踪会话类型中开销最少。 可以长时间跟踪,然后,如果发生一些有趣的情况,可以使用调试器检查当前缓冲区内容,或将当前缓冲区内容保存在跟踪日志中。

若要查看跟踪缓冲区中的跟踪消息,请使用 !wmitrace 专用调试器扩展。 有关此扩展的信息,请参阅 适用于 Windows 的调试工具

若要将缓冲区内容刷新到跟踪日志,请使用 tracelog -flush 命令的 -f 参数。

若要启动缓冲跟踪会话,请使用 tracelog -start 命令的 -buffering 参数。 有关详细信息,请参阅 Tracelog 命令语法

专用跟踪会话

专用跟踪会话是在用户模式下作为跟踪的用户模式过程的一部分运行的跟踪会话。 (标准跟踪会话在 kernel 中运行。) 专用跟踪会话也称为 用户模式跟踪会话进程跟踪会话

一次可以运行多个专用跟踪会话,但在每个进程中只能运行一个专用跟踪会话。

不能对专用跟踪会话执行实时跟踪。 必须将跟踪消息写入日志。

专用跟踪会话中使用的缓冲区始终可分页。 不能为这些缓冲区指定分页或非分页内存。

不能将跟踪消息从专用跟踪会话发送到调试器。 WMI 跟踪扩展 (!wmitrace) 不支持专用跟踪会话。

有关专用事件跟踪会话的详细信息,请参阅Microsoft Windows SDK文档。