共用方式為


擷取和檢視 TraceLogging 數據

您可以使用 Windows 效能工具的最新內部版本來擷取和檢視 TraceLoggging 數據。 在發佈您的儀器化程式之前,您應該測試 TraceLogging 提供者的程式碼,以確保事件數據已被生成,並且在適當的時機產生有意義的數據。

確認儀器準確性的過程涉及這兩個步驟:

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

注意 針對 Windows Phone,您也可以利用 Tracelog.exe 和 Xperf.exe 來擷取追蹤記錄。 請參閱下方的「在電話上捕獲追蹤(使用 Tracelog 和 XPerf)」。

先決條件

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. 檢視您的服務提供商活動。 在圖形瀏覽器中,展開系統活動

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

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

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

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