microsoft / perfview

PerfView is a CPU and memory performance-analysis tool
http://channel9.msdn.com/Series/PerfView-Tutorial
MIT License
4.15k stars 708 forks source link

A subscription to EventPipeEventSource.Dynamic.All does not resolve event names from CLR events #1072

Open ddrinka opened 4 years ago

ddrinka commented 4 years ago

I'm following along with the sample code included in the dotnet/Diagnostics repository. This code uses an EventPipe attachment to a second process to monitor events in real time.

I'm experiencing a problem where the events that appear do not resolve to EventName/TaskName, and instead display Task(044973cd-251f-4dff-a3e9-9d6307286b05), which is the GUID for the Task (GarbageCollection) the sample utilizes.

I expected to see actual event names such as GCStart/GCEnd.

Having opened https://github.com/dotnet/diagnostics/issues/685 and been redirected to this repository, I'm wondering if you can offer some insight into this behavior.

Note that subscribing to EventPipeEventSource.Clr.All, as shown in samples here, does not exhibit this issue. Only EventPipeEventSource.Dynamic.All. Additionally, resolving names works fine with custom EventSources, but not with CLR sources.

It sounds like there was an issue with Dyamic.All here, but it looks like it was resolved? https://github.com/microsoft/perfview/issues/461

ddrinka commented 4 years ago

The test cases for EventPipe parsing use EventPipeEventSource.AllEvents. I have tested this and experience similar behavior.

<Event MSec="69425.9159" PID="10636" PName="Process(10636)" TID="24980" IsClassic="False" ProviderName="Provider(e13c0d23-ccbc-4e12-931b-d9cc2eee27e4)" eventID="9" TaskName="EventID(9)" TaskNum="0" OpcodeNum="0" Version="1" Level="4" PointerSize="8" EventDataLength="10">
     0:   1  0  0  0  2  0  0  0 |  b  0                     ........ ..
</Event>