您可以使用 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 擷取追蹤數據
建立或編輯 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.wprpGeneralProfile 會擷取系統事件。 針對一般偵錯,最好擷取系統事件以及來自提供者的事件。
執行測試案例(載入和卸除驅動程式或元件以觸發事件)。
停止追蹤擷取並合併所有錄製。
<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)。
檢視您的服務提供商活動。 在圖形瀏覽器中,展開系統活動。
按兩下 [ 一般事件 ] 以在 [分析] 檢視中檢視它們。
在 [分析] 檢視中,找出來自提供者的事件,以確認記錄是否正常運作。
在 [泛型事件] 資料表的 [ 提供者名稱] 資料行中,尋找並選取具有提供者名稱的數據列。
您可以按下數據行標頭,依資料行名稱排序,這可能會讓您更容易找到提供者。 尋找您的提供者時,以滑鼠右鍵按下名稱,然後選取 [ 篩選至選取範圍]。