Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?
like image 976
MW_dev Avatar asked Jun 19 '11 06:06

MW_dev


2 Answers

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.

like image 165
Uri Cohen Avatar answered Sep 23 '22 04:09

Uri Cohen


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.

like image 44
araud Avatar answered Sep 25 '22 04:09

araud