Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
In .Net framework 3.5, there is a new trace listener, EventProviderTraceListener, which you can use to do ETW tracing. There are good introduction and some intimidating tips. It took me a while to figure out that, to do a simple ETW trace, you can just configure it like a normal trace listener by having an app config file like:
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener" type="System.Diagnostics.Eventing.EventProviderTraceListener, System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="{BF8671E1-2B70-41f3-AE0C-993C6A7D6763}" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
I put the event provider ID as initializeData and it seems to work. With that config file, you can simply use Trace.WriteLine("my message").
To start a trace session, do:
logman start mysession -p {BF8671E1-2B70-41f3-AE0C-993C6A7D6763} -o mytest.etl -ets
After you are done with tracing, you can stop by
logman stop mysession -ets
Then you can use tracerpt to dump the log to readable format.
tracerpt mytest.etl
ETW tracing is very customizable, but for doing simple tracing for debugging, it seems logging a message is enough. One advantage of using ETW tracing is performance. I did some simple measurement with a loop like:
Stopwatch timePerParse = Stopwatch.StartNew();
for (int i = 0; i < 50000; ++i)
{
Trace.WriteLine("this is using Trace");
}
timePerParse.Stop();
MessageBox.Show(timePerParse.ElapsedMilliseconds.ToString());
The result is like (on a 2.4 GHz machine):
Default trace listener with DBGView.exe |
14196ms |
TextWriterTraceListener |
211ms |
EventProviderTraceListener |
77ms |
Note: EventProviderTraceListener currently is only supported on Vista.
Keywords: ETW tracing EventProviderTraceListener System.Diagnostics.Eventing.EventProviderTraceListener logman.exe tracerpt.exe
Comments
- Anonymous
April 15, 2008
PingBack from http://microsoftnews.askpcdoc.com/?p=2728