I've been having some difficulties getting the events from .NET 4.5 EventSource based providers to show up properly in WPA. PerfView can show them fine, but it lacks the awesome grouping/filtering power of WPA.
I've been collecting using the most recent versions of PerfView and WPT that I can find:
PerfView Version 1.7.0.0 / BuildDate: Thu 10/30/2014 6:41:18.79
Microsoft Windows Performance Analyzer Version 6.3.9600.16384 (winblue_rtm.130821-1623) 2013
Collection options were initially: no-merging, everything unticked and *MinProvider in the Additional Providers field and then: Kernel Base, .NET, Cpu Samples and Merge.
The program I am using to define MinProvider and generate my test events is as follows:
using System.Diagnostics.Tracing; namespace MinProvider { [EventSource(Name = "MinProvider")] public class MinProvider : EventSource { public static MinProvider Log = new MinProvider(); public class Tasks { public const EventTask TestTask = (EventTask) 1; } [Event(1, Message = "A test task")] public void TestTask(int someNumber, string someString) { WriteEvent(1, someNumber, someString); } } class Program { static void Main() { MinProvider.Log.TestTask(42, "something or other"); } } }
When opening the resultant .etl files in PerfView, all expected events show up fine with the passed parameters etc. Opening in WPA however just yields two undecoded events for the "{d4104bf2-6935-5a60-e4dd-cfd75107b200}" provider (which I've confirmed is the Guid-hash corresponding to *MinProvider). One of the events has Id 65,534 (which from PerfView I know contains the embedded manifest information), the other has Id 1 and corresponds to my TestTask event.
I've also tried manually extracting the provider's XML manifest from the event stream, by selecting Dump Event in PerfView on the MinProvider/ManifestData event then converting the hex payload to a string, putting it into a MinProvider.man file and running "wevtutil im MinProvider.man". This then results in a
d4104bf2-6935-5a60-e4dd-cfd75107b200 : MinProvider
line appearing in the output of "xperf -providers", however WPA still refuses to decode it (I've tried a reboot after the manifest registration as well). Surely after manifest registration it should just be interpreted like any other Crimson provider?
Additionally, I've attempted to capture the trace information using both WPR with a custom profile and with "xperf -start MinSession -on d4104bf2-6935-5a60-e4dd-cfd75107b200". In each case, PerfView was perfectly happy to decode the events, yet WPA wouldn't touch them.
Are there any further steps I can take to troubleshoot this, or is there some obvious step/setting I'm missing?
From what I can tell from blogs.msdn.com/b/vancem/archive/2013/08/10/wpr-wpa-support-for-viewing-system-diagnostics-tracing-eventsource.aspx, things should just work with the versions I have installed. Any assistance would be greatly appreciated.