擷取和檢視 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 擷取追蹤數據
為您的 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>
對於核心模式提供者,您必須將 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 總管] 中,展開 [系統活動]。
按兩下 [一般事件 ] 以在 [分析] 檢視中檢視它們。
在 [分析] 檢視中,找出來自提供者的事件,以確認記錄正常運作。
在 [泛型事件] 資料表的 [ 提供者名稱 ] 資料行中,尋找並選取具有提供者名稱的數據列。
您可以按下數據行標頭,依資料行名稱排序,這可能會讓您更容易找到您的提供者。 尋找您的提供者時,以滑鼠右鍵按下名稱,然後選取 [ 篩選至選取範圍]。