Microsoft Windows 驱动程序工具包(WDK)包括一组应用程序和命令行工具用于软件跟踪。 这些工具旨在支持 Windows 事件跟踪(ETW),并补充 Windows 中包含的跟踪工具。
什么是跟踪工具?
这些工具包括用于配置、启动、更新和停止跟踪会话的 跟踪控制器 ,以及 跟踪使用者 ,这些使用者接收会话期间生成的跟踪消息,并将二进制数据转换为文件或显示的用户可读格式。
这些工具支持多种跟踪提供程序,包括用户模式应用程序和内核模式驱动程序,这些工具通过使用WPP 软件跟踪或Windows 事件跟踪 (ETW)进行了软件跟踪的集成。 有关检测代码的两种方法的比较,请参阅何时使用适用于 Windows 的 WPP 软件跟踪和事件跟踪(ETW)。
这些工具还可以访问内置于 Windows 中的保留 跟踪会话 ,例如 全局记录器跟踪会话 / NT 内核记录器跟踪会话。
其中一些工具位于 Windows 驱动程序工具包(WDK)的工具\<平台> 子目录中,其中 <平台> 为 x86 或 x64。 其他工具要么包含在 Windows 中,要么位于 WDK 的 bin\<Platform> 子目录中。
何时应使用 WPP 软件跟踪或 Windows 事件跟踪 (ETW) API?
如果有兴趣主要收集跟踪数据以进行开发和调试,请使用 WPP 软件跟踪 。 将 Windows 事件跟踪(ETW)用于其他类型的跟踪。
| WPP 软件跟踪 | Manifested/TraceLogging ETW |
|---|---|
| 在 Windows 2000 及更高版本上受支持。 | 在 Windows Vista 及更高版本上受支持。 |
| 用于开发和调试的事件跟踪。 主要针对内部开发人员。 | 用于管理、操作、分析和调试的事件跟踪。 |
| 需要 TMF 文件来解码从日志记录二进制文件的 PDB 中提取的事件。 | 用于解码事件的元数据包含在本地二进制文件或事件有效负载中。 |
| 每个跟踪提供程序只能有一个活动会话。 | 事件可以分配给多个消费者。 |
| 无法本地化消息字符串。 | 字符串可以本地化。 |
| 提供程序安全性仅限于不共享启用和解码事件所需的控制 GUID 或 TMF 文件。 | 提供程序可以应用 ACL 来限制哪些用户可以从中收集事件。 |
有关使用 Windows 软件跟踪预处理器 (WPP) 宏将软件跟踪添加到驱动程序或应用程序的信息,请参阅 WPP 软件跟踪。
有关使用驱动程序的内核模式 ETW API 的信息,请参阅 Windows 事件跟踪(ETW)。
有关使用 Windows Management Instrumentation (WMI) 扩展到 Windows 驱动模型 (WDM) 的信息,以将软件跟踪添加到任何驱动程序,请参阅 WMI 事件跟踪。
注意 ETW 和 WPP 支持大多数类型的内核模式驱动程序和用户模式应用程序。 但是,ETW 和 WPP 使用不适用于某些类型的驱动程序的类型,例如微型端口驱动程序。 若要确定是否支持特定驱动程序类型,请将基本 WPP 宏添加到驱动程序,例如 WPP_INIT_TRACING 和 WPP_CLEANUP。 如果代码未编译,因为未定义所使用的类型,则 ETW 和 WPP 不支持驱动程序类型。
本部分的内容
本部分从对软件跟踪工具的调查开始,讨论工具的基础概念,然后包括 WDK 中软件跟踪工具的文档。
本部分包括:
有关 事件跟踪的概念性信息,请参阅 Microsoft Windows SDK 文档。