记录和查看 TraceLogging 事件

可以使用许多工具来收集和解码 TraceLogging ETW 事件。

  • 若要控制跟踪会话,请使用 WPR、tracelog 或 traceview 等工具。
  • 若要解码会话中的事件,请使用 WPA、tracefmt 或 traceview 等工具。

此示例演示如何使用 Windows Performance Recorder (WPR) 记录 TraceLogging 事件,并使用 Windows 性能分析器 (WPA) 查看这些事件。

先决条件

  • Windows 10
  • Windows Performance Recorder (WPR) 的Windows 10版本,以及 Windows 性能分析器 (WPA) 的Windows 10版本(Windows 评估和部署工具包 (Windows ADK) 的一部分®)。

重要

使用 TraceLogging 捕获的跟踪必须使用 windows Performance Recorder Windows 10 版本捕获,并使用 windows 性能分析器 的 Windows 10 版本进行查看。 如果无法捕获或解码事件,请验证是否正在使用 Windows 10 版本的工具。

1. 使用 WPR 捕获跟踪数据

若要捕获Windows Phone上的跟踪,请参阅下面的捕获 traceLogging 事件Windows Phone。

创建 Windows Performance Recorder 配置文件 (.wprp) ,以便你可以使用 WPR 捕获 Tracelogging 事件。

创建 。WPRP 文件

  1. 将以下 WPRP 示例与 TraceLogging C/C++ 快速入门 中的本机代码示例或 TraceLogging 托管快速入门中的托管示例结合使用。 如果要从自己的提供程序记录事件,请将 TODO 节替换为提供程序的相应值。

    重要

    如果使用 TraceLogging C/C++ 快速入门,请在 元素的 <EventProvider> 属性中Name指定提供程序 GUID。 例如:<EventProvider Id="EventProvider_SimpleTraceLoggingProvider" Name="0205c616-cf97-5c11-9756-56a2cee02ca7" />。 如果使用托管 TraceLogging 快速入门,请在 元素的 属性中Name指定以 开头的<EventProvider />提供程序名称*。 例如,<EventProvider Name="*SimpleTraceLoggingProvider" />

    示例 WPRP 文件:

    <?xml version="1.0" encoding="utf-8"?>
    <!-- TODO:
    1. Find and replace "SimpleTraceLoggingProvider" with the name of your provider.
    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_SimpleTraceLoggingProvider" Name="SimpleTraceLoggingProvider">
          <BufferSize Value="64" />
          <Buffers Value="4" />
        </EventCollector>
    
        <!-- TODO:
        1. Update Name attribute in EventProvider xml element with your provider GUID, eg: Name="0205c616-cf97-5c11-9756-56a2cee02ca7". 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 one EventProvider xml element and references it 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_SimpleTraceLoggingProvider" Name="*SimpleTraceLoggingProvider" />
    
        <Profile Id="SimpleTraceLoggingProvider.Verbose.File" Name="SimpleTraceLoggingProvider" Description="SimpleTraceLoggingProvider" LoggingMode="File" DetailLevel="Verbose">
          <Collectors>
            <EventCollectorId Value="EventCollector_SimpleTraceLoggingProvider">
              <EventProviders>
                <!-- TODO:
                1. Fix your EventProviderId with Value same as the Id attribute on EventProvider xml element above
                -->
                <EventProviderId Value="EventProvider_SimpleTraceLoggingProvider" />
              </EventProviders>
            </EventCollectorId>
          </Collectors>
        </Profile>
    
        <Profile Id="SimpleTraceLoggingProvider.Light.File" Name="SimpleTraceLoggingProvider" Description="SimpleTraceLoggingProvider" Base="SimpleTraceLoggingProvider.Verbose.File" LoggingMode="File" DetailLevel="Light" />
        <Profile Id="SimpleTraceLoggingProvider.Verbose.Memory" Name="SimpleTraceLoggingProvider" Description="SimpleTraceLoggingProvider" Base="SimpleTraceLoggingProvider.Verbose.File" LoggingMode="Memory" DetailLevel="Verbose" />
        <Profile Id="SimpleTraceLoggingProvider.Light.Memory" Name="SimpleTraceLoggingProvider" Description="SimpleTraceLoggingProvider" Base="SimpleTraceLoggingProvider.Verbose.File" LoggingMode="Memory" DetailLevel="Light" />
    
      </Profiles>
    </WindowsPerformanceRecorder>
    
  2. 使用 保存文件。WPRP 文件扩展名。

  3. 使用 WPR 从提升的 (以管理员身份运行) 命令提示符窗口启动捕获。

    <wpr> 的路径\wpr.exe -start GeneralProfile -start TraceLoggingProvider.wprp

    提示

    出于常规分析目的,还可以将 -start GeneralProfile 添加到 wpr.exe 命令行,以捕获系统事件以及提供程序的事件。 如果只想收集事件,请省略 -start GeneralProfile

  4. 运行包含事件的应用程序。

  5. 停止跟踪捕获。

    <wpr> 的路径\wpr.exe -stop TraceCaptureFile.etl description

    提示

    如果添加了 -start GeneralProfile 来收集系统事件,请将 -stop GeneralProfile 添加到上面的 wpr.exe 命令行。

2. 捕获 Windows Phone 上的 TraceLogging 事件

  1. 启动 tracelog 以捕获提供程序的事件。

    cmdd tracelog -start test -f c:\test.etl -guid #providerguid

  2. 运行测试方案以记录事件。

  3. 停止跟踪捕获。

    cmdd tracelog -stop test

  4. 将系统跟踪结果与跟踪结果合并。

    cmdd xperf -merge c:\test.etl c:\testmerged.etl

  5. 检索合并的日志文件。

    getd c:\testmerged.etl

3. 使用 Windows 性能分析器查看 TraceLogging 数据

WPA 目前是唯一可用于查看 TraceLogging 跟踪 (.etl) 文件的查看器。

  1. 启动 WPA。

    <wpr>\wpa.exe traceLoggingResults.etl 的路径

  2. 加载在上述 wpa.exe 命令中指定的 trace (.etl) 文件,例如 traceLoggingResults.etl。

  3. 查看提供程序事件。 在 WPA Graph 资源管理器中,展开 “系统活动”。

  4. 在“ 一般事件 ”窗格中双击,在“ 分析 ”窗格中查看事件。

    展开泛型事件

  5. 在“分析”窗格中,找到提供程序中的事件,以验证 TraceLogging 是否正常工作。

    “泛型事件”表的“提供程序名称”列中,找到并选择具有提供程序名称的行。

    如果有多个提供程序要进行排序,请单击列标题以按列名称进行排序,这样就可以更轻松地查找提供程序。

    找到提供程序时,右键单击名称并选择 “筛选到所选内容”。

    筛选器选择到提供程序

    SimpleTraceLoggingProvider 的事件及其值将显示在“分析”窗口的底部窗格中。 展开提供程序名称以查看事件。

    从 simpletraceloggingprovider 查看事件

    有关使用 WPA 的详细信息,请参阅 Windows 性能分析器

总结和后续步骤

使用 WPR 和 WPA 记录和查看 ETW 事件的过程同样适用于 TraceLogging 事件。

有关其他 TraceLogging 示例,请参阅 C/C++ Tracelogging 示例。