用于Windows的C++事件跟踪(ETW)包装

C++ Event Tracing for Windows (ETW) wrapper

本文关键字:ETW 包装 跟踪 事件 Windows C++ 用于      更新时间:2023-10-16

我一直在研究在现有后端/服务器应用程序中使用的Windows事件跟踪(ETW)。MSDN和其他来源已经出售了该框架的强大功能及其与xperf的集成,等等,坦率地说,这给我留下了深刻的印象。

然而,我有点担心Win32 API和处理清单编码编译/注册等的开销。

各位,你们:

  • 推荐?在您的系统中使用它有问题吗
  • 知道一个更像C++/STL风格的包装器吗
  • 是否有管理清单文件的工具

我建议使用WPP,而不是直接使用Win32 API。

WPP是一个预处理器,它允许您在代码中的任何位置编写类似printf的跟踪行,并将这些跟踪行的结果以及其他数据(例如,传递到跟踪中各个%d和%s的参数)记录到ETW。

这方面的明确指南是Visual C++2010项目中的WPP跟踪。

一方面,ETW非常强大。但同时,从它开始并不是那么容易

然而,GitHub上有一个项目可以简化编写自己的ETW提供者。这是一个很好的写作例子:

  • ETW清单(.man)以披露事件字段
  • WPR配置文件(.wprp),用于教授WPRUI(记录器)有关您的配置文件
  • WP一个概要文件(.wapProfile)和感兴趣的区域(.xml),用于教授WPA有关数据表示的知识

请查看英特尔单事件API(SEAPI)维基