跟踪会话是跟踪提供程序生成跟踪消息的时间段。 系统为跟踪会话维护一组缓冲区,用于存储跟踪消息,直到将跟踪消息(“flushed”)传递到 跟踪日志 或 跟踪使用者。
有三种基本的跟踪会话类型:跟踪日志会话、实时跟踪会话和缓冲跟踪会话。 单个跟踪会话可以是跟踪日志会话、实时跟踪会话或两者兼有。 缓冲跟踪会话是独占的。
此外,还有专用跟踪会话和保留跟踪会话,例如 NT 内核记录器跟踪会话 和 全局记录器跟踪会话,这些会话可以作为日志会话或实时会话运行。 可以使用标准工具控制这些会话并显示生成的跟踪消息。
跟踪日志会话
在 跟踪日志会话中,跟踪消息以二进制格式从跟踪缓冲区写入日志文件。 这是跟踪会话的标准默认类型。
Real-Time 跟踪会话
在实时跟踪会话中,跟踪消息将直接传递到跟踪使用者,例如 TraceView 或 Tracefmt,而不是或除了发送到日志文件。
缓冲跟踪会话
在 缓冲跟踪会话中,跟踪消息保留在跟踪缓冲区中;它们不会写入 跟踪日志 或传送到 跟踪使用者。 缓冲区像循环文件一样维护。 当它已满时,最新的跟踪消息将覆盖缓冲区中最早的跟踪消息。
缓冲跟踪会话仅在 Windows Vista 和更高版本的 Windows 上受支持。
尽管软件跟踪通常会导致很少的开销,但缓冲跟踪会话在所有跟踪会话类型中开销最少。 可以长时间跟踪,然后,如果发生一些有趣的情况,可以使用调试器检查当前缓冲区内容,或在跟踪日志中保存当前缓冲区内容。
若要查看跟踪缓冲区中的跟踪消息,请使用 !wmitrace 专用调试器扩展。 有关此扩展的信息,请参阅 适用于 Windows 的调试工具。
若要将缓冲区内容刷新到跟踪日志,请使用 tracelog -flush 命令的 -f 参数。
若要启动缓冲跟踪会话,请使用 tracelog -start 命令的 -buffering 参数。 有关详细信息,请参阅 Tracelog 命令语法。
专用跟踪会话
专用跟踪会话是在用户模式下运行的跟踪会话,作为跟踪的用户模式进程的一部分。 (标准跟踪会话在内核中运行。专用跟踪 会话也称为用户模式跟踪会话 或 进程跟踪会话。
一次可以运行多个专用跟踪会话,但在每个进程中只能运行一个专用跟踪会话。
无法对专用跟踪会话执行实时跟踪。 必须将跟踪消息写入日志。
专用跟踪会话中使用的缓冲区始终可分页。 不能为这些缓冲区指定分页内存或非分页内存。
无法将跟踪消息从专用跟踪会话发送到调试器。 WMI 跟踪扩展(!wmitrace)不支持专用跟踪会话。
有关专用事件跟踪会话的详细信息,请参阅 Microsoft Windows SDK 文档。