c++ - 从用户模式使用 WPP 的事件跟踪,使用 Visual Studio 的 native 应用程序

标签 c++ visual-studio logging etw

我正在寻找一个使用“Windows 事件跟踪”(ETW) 的示例,该示例使用 WPP(一种预处理器)来处理在 Visual Studio 环境中开发的应用程序。 虽然 MSDN 文档 promise WPP 也可用于用户模式、 native 应用程序,但它仅包含对设备驱动程序这样做的示例,并且在很大程度上依赖于与 makefile 的集成。

所以我想知道是否有人能够让这个工作,他是否愿意分享他的发现或工作示例代码。 谢谢! 尤里·科恩

最佳答案

WPP当然可以用在用户态,你只需要从WDK中取出TraceWPP.exe即可。

但是,如果您没有使用大量遗留代码,或者您对监控应用程序性能感兴趣,我会考虑改用基于 list 的 ETW 事件;由于每条消息都被明确描述为一个结构,因此在 XPerf 中进行分析或围绕它编写其他工具会更容易。 WPP 实际上只是将字符串记录到您​​稍后必须解析的 ETL 跟踪中。

您还可以在同一个应用程序中同时使用 WPP 和基于 list 的 ETW - 指南是,将 WPP 用于仅私有(private)/一次性调试字符串,并将 list 事件用于您想要的更多公共(public)“官方”事件追踪。

关于c++ - 从用户模式使用 WPP 的事件跟踪,使用 Visual Studio 的 native 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4482107/

相关文章:

c++ - 无法在 OS X 10.9 Mavericks 上编译 Asterisk

C++shared_ptr绑定(bind)映射转换段错误

c++ - 混合 C 和 C++ 时不断出现 LNK2019 错误

xml - 有没有办法将一个代码片段嵌入另一个代码片段?

c++ - 为什么 Visual Studio 2010 会创建预编译头文件,即使我不要求它?

java - SOAP 日志记录轴 2

c++ - OSX OpenGL 设置代码中的竞争条件

windows - 在 Windows XP 上使用 cpprestsdk 编译的 dll 库

grails - grails 2.1.2 log4j配置奇怪的行为

java - hadoop-namenode主机登录问题