问题
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