捕获和查看 TraceLogging 数据
可以使用最新内部版本的 Windows Performance Tools (WPT) 捕获和查看 TraceLoggging 数据。 在发布检测之前,应测试 TraceLogging 提供程序代码,以确保在适当的时间生成事件数据并生成有意义的数据。
验证检测是否正确的过程涉及以下两个步骤:
- 使用 Windows Performance Recorder (wpr.exe 或 wprui.exe) 捕获跟踪。
- 使用 Windows 性能分析器 (wpa.exe) 查看跟踪。
注意对于Windows Phone,还可以使用 Tracelog.exe 和 Xperf.exe 来捕获跟踪。 请参阅下面的“使用 Tracelog 和 XPerf) 在电话 (上捕获跟踪”。
先决条件
WPR 和 WPA 工具必须与所链接的 TraceLogging 版本兼容。 如果无法捕获或解码事件,可能是因为工具不匹配且不兼容。
使用 WPR 捕获跟踪数据
为 TraceLoggingProvider 创建或编辑 (.wprp) 的 WPR 配置文件。
可以使用以下示例。 将内容保存到文件扩展名为 .wprp 的文件中。 将 TODO 部分替换为提供程序的相应值。 例如,如果通过 GUID 注册了提供程序,请在此文件中指定 GUID。
注意 对于内核模式提供程序,请将 NonPagedMemory=“true” 添加到 EventProvider Id 元素,请参阅以下 XML 示例中的注释。
示例 WPRP 文件:
<?xml version="1.0" encoding="utf-8"?>
<!-- TODO:
1. Find and replace "WorkshopTraceLoggingProvider" with your component name.
2. See TODO below to update GUID for your event provider
-->
<WindowsPerformanceRecorder Version="1.0" Author="Microsoft Corporation"
Copyright="Microsoft Corporation" Company="Microsoft Corporation">
<Profiles>
<EventCollector Id="EventCollector_WorkshopTraceLoggingProvider"
Name="WorkshopTraceLoggingProviderCollector">
<BufferSize Value="64" />
<Buffers Value="4" />
</EventCollector>
<!-- TODO:
1. Update Name attribute in EventProvider xml element with your provider GUID,
or if you specify an EventSource C# provider or call TraceLoggingRegister(...)
without a GUID, use star(*) before your provider name,
eg: Name="*MyEventSourceProvider" which will enable your provider appropriately.
2. This sample lists more than 1 EventProvider xml element and references them again
in a Profile with EventProviderId xml element. For your component wprp, enable
the required number of providers and fix the Profile xml element appropriately
-->
<EventProvider Id="EventProvider_WorkshopTraceLoggingProvider"
Name="f9bc6c5d-4b98-43b5-90a1-1d0c8f45bf5a" />
<!-- For Kernel Mode providers, add NonPagedMemory="true" attribute to the
EventProvider Id element:
Example:
<EventProvider Id="EventProvider_UMDFReflector"
Name="263dd596-513b-4fd9-969c-022b691bb130" NonPagedMemory="true"/>
-->
<Profile Id="WorkshopTraceLoggingProvider.Verbose.File"
Name="WorkshopTraceLoggingProvider" Description="WorkshopTraceLoggingProvider"
LoggingMode="File" DetailLevel="Verbose">
<Collectors>
<EventCollectorId Value="EventCollector_WorkshopTraceLoggingProvider">
<EventProviders>
<!-- TODO:
1. Fix your EventProviderId with Value same as the Id attribute on EventProvider
xml element above
-->
<EventProviderId Value="EventProvider_WorkshopTraceLoggingProvider" />
</EventProviders>
</EventCollectorId>
</Collectors>
</Profile>
<Profile Id="WorkshopTraceLoggingProvider.Light.File"
Name="WorkshopTraceLoggingProvider"
Description="WorkshopTraceLoggingProvider"
Base="WorkshopTraceLoggingProvider.Verbose.File"
LoggingMode="File"
DetailLevel="Light" />
<Profile Id="WorkshopTraceLoggingProvider.Verbose.Memory"
Name="WorkshopTraceLoggingProvider"
Description="WorkshopTraceLoggingProvider"
Base="WorkshopTraceLoggingProvider.Verbose.File"
LoggingMode="Memory"
DetailLevel="Verbose" />
<Profile Id="WorkshopTraceLoggingProvider.Light.Memory"
Name="WorkshopTraceLoggingProvider"
Description="WorkshopTraceLoggingProvider"
Base="WorkshopTraceLoggingProvider.Verbose.File"
LoggingMode="Memory"
DetailLevel="Light" />
</Profiles>
</WindowsPerformanceRecorder>
对于内核模式提供程序,需要将 NonPagedMemory=“true” 属性添加到 EventProvider Id 元素。
<EventProvider Id="EventProvider_myTraceLoggingProviderKM" Name="263dd596-513b-4fd9-969c-022b691bb130" NonPagedMemory="true"/>
使用文件扩展名 ( 保存文件。WPRP) 。
从命令提示符窗口中使用 WPR 启动捕获。
<path to wpr>\wpr.exe -start GeneralProfile -start yourTraceLoggingProvider.wprp
GeneralProfile 将捕获系统事件。 对于常规调试,最好捕获系统事件以及提供程序中的事件。
运行测试方案 (加载和卸载驱动程序或组件以触发) 事件。
停止跟踪捕获并合并所有记录。
<path to wpr>\wpr.exe -stop GeneralProfile -stop yourTraceCaptureFile.etl description
还可以使用 Windows Performance Recorder 用户界面 (Wprui.exe) 来收集跟踪数据。
<path to wpr>\wprui.exe
- 在 WPR 窗口中,如果选项处于隐藏状态,请单击“ 更多选项”。
- 单击“ 添加配置文件” 并浏览到 .wprp 文件的位置。
- 选择 .wprp 文件,然后单击“ 打开”。 WPR 将验证配置文件的 XML 架构。
- 单击“ 开始 ”并运行测试方案。
- 单击“ 保存 ”以合并结果并将其保存到文件中。 如果使用 WPR 用户界面,还可以选择在 WPA 中打开 .etl 日志文件。
使用 Tracelog 和 XPerf) 在电话 (上捕获跟踪
开始对提供程序进行跟踪捕获。
cmdd tracelog '-start test -f c:\test.etl -guid #providerguid'
运行测试方案以记录事件。
停止跟踪捕获。
cmdd tracelog '-stop test'
合并跟踪结果。
cmdd xperf -merge c:\test.etl c:\testmerged.etl
检索合并的日志文件。
getd c:\testmerged.etl
使用 WPA 查看 TraceLogging 数据
目前,WPA 是唯一可用于查看 TraceLogging 生成的 etl 文件的查看器。
启动 WPA。
<path to wpr>\wpa.exe
加载跟踪文件 (.etl) 。
查看提供程序事件。 在 Graph 资源管理器中,展开 “系统活动”。
双击“ 一般事件 ”,在“分析”视图中查看它们。
在“分析”视图中,找到提供程序中的事件,验证日志记录是否正常工作。
在“泛型事件”表的“ 提供程序名称 ”列中,找到并选择具有提供程序名称的行。
可以单击列标题以按列名称排序,这可能会使查找提供程序更加容易。 找到提供程序时,右键单击名称并选择 “筛选到所选内容”。