次の方法で共有


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 を使用してトレース データをキャプチャするには

  1. 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>
  1. カーネル モード プロバイダーの場合は、NonPaggedMemory="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 パフォーマンス レコーダー ユーザー インターフェイス (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. [分析] ビューでプロバイダーからのイベントを見つけて、ログが機能していることを確認します。

    「汎用イベント」テーブルの「プロバイダー名」列で、プロバイダー名が含まれる行を見つけて選択します。

    列ヘッダーをクリックすると、列名で並べ替えることができ、プロバイダーを見つけやすくなります。 プロバイダーを見つけたら、名前を右クリックし、フィルターして選択を選択します。