C++ Event Tracing for Windows (ETW) wrapper [closed]

别等时光非礼了梦想. 提交于 2021-02-04 13:50:27

问题


I have been investigating Event Tracing for Windows (ETW) for use within existing backend/server applications. MSDN and other sources have sold the power of the framework and its integration with xperf, etc. which frankly I am impressed with.

However I am a bit concerned by the Win32 APIs and the overhead of working with the manifest coding compilating/registration, etc.

Folks, do you:

  • Recommend it? Have problems using it with your systems?
  • Know of a more C++/STL style wrapper?
  • Are there tools for managing the manifest files?

回答1:


Rather than using the Win32 API directly, I would recommend using WPP.

WPP is a pre-processor which allow you to write printf-like trace lines anywhere in your code and have the result of those, along with the additional data (e.g. the arguments passed to the various %d and %s in the trace) be logged to ETW.

The definite guide for this is WPP Tracing in Visual C++ 2010 Projects.




回答2:


On the one hand, ETW is very powerful. But at the same time, it's not that easy to start with it.

However, there is a project on GitHub that simplifies writing your own ETW provider. And it's a good example of writing:

  • ETW manifest (.man) to disclose event fields
  • WPR profile (.wprp) to teach WPRUI (recorder) about your profiler
  • WPA profile (.wpaProfile) and regions of interest (.xml) to teach WPA about representation of your data.

Please look at the Intel single event API (SEAPI) wiki.



来源:https://stackoverflow.com/questions/6400899/c-event-tracing-for-windows-etw-wrapper

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!