共用方式為


擷取和檢視 TraceLogging 數據

您可以使用最新的 Windows Performance Tools (WPT) ,擷取及檢視 TraceLoggging 數據。 發佈檢測之前,您應該先測試 TraceLogging 提供者程式代碼,以確保您的事件數據產生,並在適當的時間產生有意義的數據。

驗證檢測是否正確的程式包含下列兩個步驟:

  • 使用 Windows Performance Recorder (wpr.exe 或 wprui.exe) 擷取追蹤。
  • 使用 Windows 效能分析器 (wpa.exe) 來檢視追蹤。

注意針對 Windows Phone,您也可以使用 Tracelog.exe 和 Xperf.exe 來擷取追蹤。 See "To capture trace on Phone (using Tracelog and XPerf)" below.

先決條件

WPR 和 WPA 工具必須與您所連結的 TraceLogging 版本相容。 如果您無法擷取或譯碼事件,可能是因為工具不相符且不相容。

使用 WPR 擷取追蹤數據

  1. 為您的 TraceLoggingProvider 建立或編輯 WPR 配置檔 (.wprp) 。

    您可以使用下列範例。 將內容儲存至擴展名為 .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>
  1. 對於核心模式提供者,您必須將 NonPagedMemory=“true” 屬性新增至 EventProvider Id 元素。

    <EventProvider Id="EventProvider_myTraceLoggingProviderKM" 
      Name="263dd596-513b-4fd9-969c-022b691bb130" NonPagedMemory="true"/>
    
  2. 使用擴展名 ( 儲存盤案。WPRP) 。

  3. 從命令提示字元視窗使用 WPR 啟動擷取。

    <path to wpr>\wpr.exe -start GeneralProfile -start  yourTraceLoggingProvider.wprp
    

    GeneralProfile 會擷取系統事件。 針對一般偵錯,最好擷取系統事件以及提供者的事件。

  4. 執行測試案例 (載入和卸除驅動程式或元件,以觸發事件) 。

  5. 停止追蹤擷取並合併所有錄製。

    <path to wpr>\wpr.exe -stop GeneralProfile -stop  yourTraceCaptureFile.etl description
    

您也可以使用 Windows Performance Recorder 使用者介面 (Wprui.exe) 來收集追蹤數據。

<path to wpr>\wprui.exe
  1. 在 WPR 視窗中,如果選項已隱藏,請按兩下 [更多選項]。
  2. 按兩下 [新增配置檔 ],然後流覽至 .wprp 檔案的位置。
  3. 選取 .wprp 檔案,然後按兩下 [ 開啟]。 WPR 會驗證配置檔的 XML 架構。
  4. 按兩下 [開始 ] 並執行您的測試案例。
  5. 按兩下 [ 儲存 ] 以合併結果,並將其儲存至檔案。 如果您使用 WPR 使用者介面,您也可以選擇在 WPA 中開啟 .etl 記錄檔。

使用 Tracelog 和 XPerf) 擷取電話 (上的追蹤

  1. 啟動提供者的追蹤擷取。

    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
    

使用 WPA 檢視 TraceLogging 數據

目前,WPA 是唯一可用來檢視 TraceLogging 產生的 etl 檔案的查看器。

  1. 啟動 WPA。

    <path to wpr>\wpa.exe
    
  2. 載入追蹤檔案 (.etl) 。

  3. 檢視您的提供者事件。 在 [Graph 總管] 中,展開 [系統活動]。

  4. 按兩下 [一般事件 ] 以在 [分析] 檢視中檢視它們。

  5. 在 [分析] 檢視中,找出來自提供者的事件,以確認記錄正常運作。

    在 [泛型事件] 資料表的 [ 提供者名稱 ] 資料行中,尋找並選取具有提供者名稱的數據列。

    您可以按下數據行標頭,依資料行名稱排序,這可能會讓您更容易找到您的提供者。 尋找您的提供者時,以滑鼠右鍵按下名稱,然後選取 [ 篩選至選取範圍]。