TraceLogging データのキャプチャと表示
Windows パフォーマンス ツール (WPT) の最新の内部バージョンを使用して、TraceLoggging データをキャプチャして表示できます。 インストルメンテーションを公開する前に、TraceLogging プロバイダー コードをテストして、イベント データが生成され、適切なタイミングで意味のあるデータが生成されていることを確認する必要があります。
インストルメンテーションが正しいことを検証するプロセスには、次の 2 つの手順が含まれます。
- Windows パフォーマンス レコーダー (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 を指定します。
注 カーネル モード プロバイダーの場合は、NonPaggedMemory="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>
カーネル モード プロバイダーの場合は、NonPaggedMemory="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 パフォーマンス レコーダー ユーザー インターフェイス (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 エクスプローラーで、システム アクティビティを展開します。
[汎用イベント] をダブルクリックして、分析ビューで表示します。
[分析] ビューでプロバイダーからのイベントを見つけて、ログが機能していることを確認します。
「汎用イベント」テーブルの「プロバイダー名」列で、プロバイダー名が含まれる行を見つけて選択します。
列ヘッダーをクリックすると、列名で並べ替えることができ、プロバイダーを見つけやすくなります。 プロバイダーを見つけたら、名前を右クリックし、フィルターして選択を選択します。