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

标签 etw xperf windows-performance-analyzer

我为 CLR 提供程序记录 ETW 事件:

xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4 -f clr.etl
...
xperf -stop clr

然后在 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    

Loo 是这样的 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 中如何呈现自定义字段有点奇怪,但是在您克服最初的痛苦之后,您会发现它的编辑器非常有用。您提到的字段是特定于给定事件的自定义字段之一。默认情况下,这些字段不会显示,您需要在“高级” View 窗口中添加它们:

add-field-to-view

我拖了 Field1之前Thread Name柱子。然后你需要选择一个事件(不是它的父事件,而是事件所在的行),你会注意到字段的列名会相应地改变:

reason-field

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

关于etw - 如何使用 wpa 查看通用事件详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41483424/

相关文章:

etw - 是否有工具可以转储/显示提供者 list 中定义的事件数据模板?

c# - EventSource 事件 ID 和 TPL

c# - 注册 ETW 提供商时遇到问题

windows - 使用 xperf 列出每个进程访问的文件?

windows - 在 Xperf 中捕获调用堆栈和事件

performance - 在另一台计算机上查看 xperf ETL 文件时出错

Windows 性能分析器缺少 ImageId 事件

c# - 如何在 Azure 角色中启用自定义 ETW 事件?

sdk - Xperfview : What's the difference between CPU sampling and CPU Usage?