用于Windows的C++事件跟踪(ETW)包装
C++ Event Tracing for Windows (ETW) wrapper
我一直在研究在现有后端/服务器应用程序中使用的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)维基。
相关文章:
- 如何在c++17中制作一个模板包装器/装饰器
- std::vector的包装器,使数组的结构看起来像结构的数组
- 如何在c++迭代器类型中包装std::chrono
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- 用pybind11包装C++抽象类时出错
- 为左值和右值的包装器实现C++范围
- C结构,其指针将被包装在unique_ptr中
- 如何包装第三方DLL在R中使用
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 将 N-arg 函数包装到另一个函数中
- 元组由 Swig 生成的 Python 包装器返回,用于C++向量
- 包装一个对象并假装它是一个 int
- 使用 Python Extension API 包装复杂C++类
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 包装C++类时不完整的类型 GLFWwindow
- 将函数包装器转换为 std::function
- C++函数包装器来捕获某些信号
- 创建包装升压适配器的自定义范围类
- 如何包装(撰写)增强 hana 地图并访问括号运算符(运算符 [])?
- 用于Windows的C++事件跟踪(ETW)包装