WPP 软件跟踪
本部分介绍如何使用 Windows 软件跟踪预处理器 (WPP) 跟踪软件组件 (跟踪提供程序) 的操作。 跟踪提供程序可以是以下项之一:
内核模式驱动程序。
用户模式驱动程序、应用程序或动态链接库 (DLL) 。
WPP 软件跟踪通过添加简化跟踪提供程序操作的方法来补充和增强 WMI 事件 跟踪。 它是跟踪提供程序记录实时二进制消息的有效机制。 随后,记录的消息可以转换为跟踪提供程序操作的可读跟踪。
何时应使用 WPP 软件跟踪? |
---|
WPP 软件跟踪主要用于在开发过程中调试代码。 如果要发布可由对结构化 ETW 事件感兴趣的应用程序使用的事件,除了在开发期间进行跟踪外,请使用以下命令:
|
使用 WPP 软件跟踪记录消息类似于使用 Windows 事件日志记录服务。 驱动程序在日志文件中记录消息 ID 和未格式化的二进制数据。 随后,后处理器将日志文件中的信息转换为可读的形式。 但是,WPP 软件跟踪支持比事件日志记录服务支持的消息格式更强大、更灵活。 例如,WPP 软件跟踪具有对 IP 地址、GUID、系统 ID、时间戳和其他有用数据类型的内置支持。 此外,用户可以添加与其应用程序相关的自定义数据类型。
WPP 软件跟踪过程概述
将 WPP 软件跟踪添加到驱动程序或应用程序的基本过程包括以下步骤。 如果使用 WDK 中提供的 Visual Studio 模板之一来创建 WDF 驱动程序,则大部分工作都是为你完成的。
定义一个控件 GUID,该 GUID 将驱动程序或应用程序唯一标识为 跟踪提供程序。 提供程序在其 WPP_CONTROL_GUIDS 宏的定义以及 Tracelog 或其他 跟踪控制器使用的相关控制文件中指定此 GUID。
将所需的 WPP 相关 C 预处理器指令和 WPP 宏调用添加到提供程序的源文件,如 将 WPP 软件跟踪添加到 Windows 驱动程序 和 WPP 软件跟踪参考中所述。
修改 Visual Studio 项目以运行 WPP 预处理器并生成驱动程序,如将 WPP 软件跟踪添加到 Windows 驱动程序 的步骤 6 中所述。 有关更多生成时间选项,请参阅 WPP 预处理器 。
安装驱动程序或组件。 启动跟踪会话并记录跟踪消息。 使用软件跟踪工具(如 TraceView、 Tracelog、 Tracefmt 和 Tracepdb )配置、启动和停止跟踪会话,以及显示和筛选跟踪消息。 这些工具包含在 Windows 驱动程序工具包 (WDK) 中。
在本节中
- 将 WPP 软件跟踪添加到 Windows 驱动程序
- 用于记录跟踪的即时跟踪记录器
- 在跟踪提供程序中使用 WPP 软件跟踪
- 将 WPP 宏添加到跟踪提供程序
- WPP 预处理器
- WDF 驱动程序的跟踪和诊断能力
注意 Windows (ETW) 和 WPP 的事件跟踪支持大多数类型的内核模式和用户模式驱动程序。 但是,ETW 和 WPP 使用不适用于某些类型的驱动程序的类型,例如微型端口驱动程序。 若要确定是否支持特定驱动程序类型,请将基本 WPP 宏添加到驱动程序,例如 WPP_INIT_TRACING 和 WPP_CLEANUP。 如果代码由于未定义所使用的类型而未编译,则 ETW 和 WPP 无法支持驱动程序类型。
有关 ETW 的详细信息,请参阅 Windows 事件跟踪。
注意 一次只能由一个跟踪会话启用 WPP 跟踪提供程序。 有关详细信息 ,请参阅 WPP 提供程序 。
有关 WMI 库支持支持 WPP 软件跟踪的例程的信息,请参阅: