如何用wpa查看通用事件详细信息?

Ser*_*ich 4 etw xperf windows-performance-analyzer

我为CLR提供者记录了ETW事件:

xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4 -f clr.etl
...
xperf -stop clr
Run Code Online (Sandbox Code Playgroud)

然后在wpa.exe中打开clr.etl并看到大量的"通用事件".但似乎wpa不显示MSDN中描述的一些数据

我能看到的与此类似:

Process    Unknown
Id    1
Opcode Name
Task Name
Provider Name    e13c0d23-ccbc-4e12-931b-d9cc2eee27e4
Time    0,071731589s
Selection Duration    0,416407863s
Start Time    0,002151869s
End Time    0,418559732s
Data Points    1
Table Data    Point    Selection
Cpu    0    
ThreadId    50 440    
Sum of Count    1    23
Time (s)    0,071846769    
Run Code Online (Sandbox Code Playgroud)

像这样的厕所是GCStart_V1事件,但我找不到例如田地Reason

是否有可能在wpa中看到通用事件数据?

WPA版本 - 10.0.10586.212

low*_*ign 5

旁注:我通常用至少那两个内核标志来记录跟踪:

xperf -on PROC_THREAD+LOADER -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4
xperf -stop -stop clr -d clr.etl
Run Code Online (Sandbox Code Playgroud)

否则,WPA中可能无法解析进程名称.

回到你的问题,在WPA中如何呈现自定义字段有点奇怪,但在你克服了最初的痛苦之后,你会发现它的编辑器非常有用.您提到的字段是特定于给定事件的自定义字段之一.默认情况下,这些字段不会显示,您需要在"高级"视图窗口中添加它们:

添加场查看的

我Field1在Thread Name列之前拖了一下.然后,您需要选择一个事件(不是其父项,而是包含事件的行),您将注意到字段的列名相应地更改:

理由场

此外,该Message字段通常包含所有字段(它们的名称和值),例如在这种情况下:Reason=1; Count=2; ClrInstanceID=36


Alo*_*aus 5

它经常发生在"普通"机器上,因为.NET修补程序等导致CLR ETW提供程序注册被搞砸了.在这种情况下,您需要重新/注册(64位)

wevtutil um %windir%\Microsoft.NET\Framework64\v4.0.30319\CLR-ETW.man
wevtutil im %windir%\Microsoft.NET\Framework64\v4.0.30319\CLR-ETW.man
Run Code Online (Sandbox Code Playgroud)

如果您的问题是您的视图未配置为查看Field1 .. N自定义事件,则lowleveldesign的答案是正确的.