如何使用 wpa 查看通用事件详细信息?
How to view generic event details with wpa?
我为 CLR 提供程序记录 ETW 事件:
xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4 -f clr.etl
...
xperf -stop clr
然后在 wpa.exe 中打开 clr.etl 并查看大量 'generic event'。但似乎 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
像这样是 GCStart_V1
事件,但我找不到例如字段 Reason
是否可以在 wpa 中查看通用事件数据?
WPA 版本 - 10.0.10586.212
旁注:我通常至少使用这两个内核标志来记录跟踪:
xperf -on PROC_THREAD+LOADER -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4
xperf -stop -stop clr -d clr.etl
否则进程名称可能无法在 WPA 中解析。
回到你的问题,自定义字段在 WPA 中的呈现方式有点奇怪,但在你克服了最初的痛苦之后,你会发现它的编辑器非常有用。您提到的字段是特定于给定事件的自定义字段之一。默认情况下不显示这些字段,您需要在高级视图中添加它们 window:
我将 Field1
拖到 Thread Name
列之前。然后你需要 select 一个事件(不是它的父事件而是事件所在的行),你会注意到字段的列名相应地改变了:
此外,Message
字段通常包含所有字段(它们的名称和值),例如在这种情况下:Reason=1; Count=2; ClrInstanceID=36
由于 .NET 修补程序等原因,CLR ETW 提供程序注册在 "normal" 机器上经常发生。在那种情况下,你需要 re/register 它与(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
如果您的问题是您的视图未配置为查看 Field1 .. N 个自定义事件,那么 lowleveldesign 的答案是正确的。
我为 CLR 提供程序记录 ETW 事件:
xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4 -f clr.etl
...
xperf -stop clr
然后在 wpa.exe 中打开 clr.etl 并查看大量 'generic event'。但似乎 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
像这样是 GCStart_V1
事件,但我找不到例如字段 Reason
是否可以在 wpa 中查看通用事件数据?
WPA 版本 - 10.0.10586.212
旁注:我通常至少使用这两个内核标志来记录跟踪:
xperf -on PROC_THREAD+LOADER -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4
xperf -stop -stop clr -d clr.etl
否则进程名称可能无法在 WPA 中解析。
回到你的问题,自定义字段在 WPA 中的呈现方式有点奇怪,但在你克服了最初的痛苦之后,你会发现它的编辑器非常有用。您提到的字段是特定于给定事件的自定义字段之一。默认情况下不显示这些字段,您需要在高级视图中添加它们 window:
我将 Field1
拖到 Thread Name
列之前。然后你需要 select 一个事件(不是它的父事件而是事件所在的行),你会注意到字段的列名相应地改变了:
此外,Message
字段通常包含所有字段(它们的名称和值),例如在这种情况下:Reason=1; Count=2; ClrInstanceID=36
由于 .NET 修补程序等原因,CLR ETW 提供程序注册在 "normal" 机器上经常发生。在那种情况下,你需要 re/register 它与(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
如果您的问题是您的视图未配置为查看 Field1 .. N 个自定义事件,那么 lowleveldesign 的答案是正确的。