トレース ログ イベントの記録と表示

多くのツールを使用して、トレース ログ ETW イベントを収集およびデコードできます。

  • トレース セッションを制御するには、WPR、tracelog、traceview などのツールを使用します。
  • セッションからイベントをデコードするには、WPA、tracefmt、traceview などのツールを使用します。

この例では、Windows パフォーマンス レコーダー (WPR) を使用して TraceLogging イベントを記録し、Windows パフォーマンス アナライザー (WPA) で表示する方法を示します。

前提条件

  • Windows 10
  • Windows パフォーマンス レコーダー (WPR) のWindows 10バージョンと、Windows Assessment and Deployment Kit (Windows ADK) の一部である Windows® パフォーマンス アナライザー (WPA) のWindows 10バージョン。

重要

TraceLogging でキャプチャされたトレースは、Windows パフォーマンス レコーダーのWindows 10バージョンでキャプチャし、windows パフォーマンス アナライザーのWindows 10 バージョンで表示する必要があります。 イベントをキャプチャまたはデコードできない場合は、Windows 10 バージョンのツールを使用していることを確認します。

1. WPR を使用してトレース データをキャプチャする

Windows Phoneでトレースをキャプチャするには、以下の「Windows Phoneでのトレース ログ イベントのキャプチャ」を参照してください。

WPR を使用してトレース ログ イベントをキャプチャできるように、Windows パフォーマンス レコーダー プロファイル (.wprp) を作成します。

を作成します。WPRP ファイル

  1. 次の WPRP の例を 、TraceLogging C/C++ クイック スタート のネイティブ コード例、または TraceLogging Managed Quick Start のマネージド例と共に使用します。 独自のプロバイダーからイベントをログに記録する場合は、セクションを TODO プロバイダーの適切な値に置き換えます。

    重要

    TraceLogging C/C++ クイック スタートを使用している場合は、 要素の <EventProvider> 属性にNameプロバイダー GUID を指定します。 (例: <EventProvider Id="EventProvider_SimpleTraceLoggingProvider" Name="0205c616-cf97-5c11-9756-56a2cee02ca7" />)。 マネージド TraceLogging クイック スタートを使用している場合は、 要素の 属性でName、 で*始まるプロバイダー名を<EventProvider />指定します。 たとえば、「 <EventProvider Name="*SimpleTraceLoggingProvider" /> 」のように入力します。

    サンプル WPRP ファイル:

    <?xml version="1.0" encoding="utf-8"?>
    <!-- TODO:
    1. Find and replace "SimpleTraceLoggingProvider" with the name of your provider.
    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_SimpleTraceLoggingProvider" Name="SimpleTraceLoggingProvider">
          <BufferSize Value="64" />
          <Buffers Value="4" />
        </EventCollector>
    
        <!-- TODO:
        1. Update Name attribute in EventProvider xml element with your provider GUID, eg: Name="0205c616-cf97-5c11-9756-56a2cee02ca7". 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 one EventProvider xml element and references it 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_SimpleTraceLoggingProvider" Name="*SimpleTraceLoggingProvider" />
    
        <Profile Id="SimpleTraceLoggingProvider.Verbose.File" Name="SimpleTraceLoggingProvider" Description="SimpleTraceLoggingProvider" LoggingMode="File" DetailLevel="Verbose">
          <Collectors>
            <EventCollectorId Value="EventCollector_SimpleTraceLoggingProvider">
              <EventProviders>
                <!-- TODO:
                1. Fix your EventProviderId with Value same as the Id attribute on EventProvider xml element above
                -->
                <EventProviderId Value="EventProvider_SimpleTraceLoggingProvider" />
              </EventProviders>
            </EventCollectorId>
          </Collectors>
        </Profile>
    
        <Profile Id="SimpleTraceLoggingProvider.Light.File" Name="SimpleTraceLoggingProvider" Description="SimpleTraceLoggingProvider" Base="SimpleTraceLoggingProvider.Verbose.File" LoggingMode="File" DetailLevel="Light" />
        <Profile Id="SimpleTraceLoggingProvider.Verbose.Memory" Name="SimpleTraceLoggingProvider" Description="SimpleTraceLoggingProvider" Base="SimpleTraceLoggingProvider.Verbose.File" LoggingMode="Memory" DetailLevel="Verbose" />
        <Profile Id="SimpleTraceLoggingProvider.Light.Memory" Name="SimpleTraceLoggingProvider" Description="SimpleTraceLoggingProvider" Base="SimpleTraceLoggingProvider.Verbose.File" LoggingMode="Memory" DetailLevel="Light" />
    
      </Profiles>
    </WindowsPerformanceRecorder>
    
  2. を使用してファイルを保存します。WPRP ファイル名拡張子。

  3. 管理者特権 (管理者として実行) コマンド プロンプト ウィンドウから WPR を使用してキャプチャを開始します。

    < wpr> へのパス\wpr.exe -start GeneralProfile -start TraceLoggingProvider.wprp

    ヒント

    一般的なプロファイリングの目的で、 -start GeneralProfile を wpr.exe コマンド ラインに追加して、システム イベントとプロバイダーからのイベントをキャプチャすることもできます。 イベントのみを収集する場合は、 -start GeneralProfile を省略します。

  4. イベントを含むアプリケーションを実行します。

  5. トレース キャプチャを停止します。

    < wpr> へのパス\wpr.exe -stop TraceCaptureFile.etl description

    ヒント

    システム イベントを収集するために -start GeneralProfile を追加した場合は、上記の wpr.exe コマンド ラインに -stop GeneralProfile を追加します。

2. Windows Phoneでトレース ログ イベントをキャプチャする

  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

3. Windows パフォーマンス アナライザーを使用してトレース ログ データを表示する

WPA は現在、トレース ログ トレース (.etl) ファイルの表示に使用できる唯一のビューアーです。

  1. WPA を起動します。

    <path to wpr>\wpa.exe traceLoggingResults.etl

  2. 上記のwpa.exe コマンドで指定したトレース (.etl) ファイル (traceLoggingResults.etl など) を読み込みます。

  3. プロバイダー イベントを表示します。 WPA Graph エクスプローラーで、[システム アクティビティ] を展開します。

  4. [汎用イベント] ペインをダブルクリックして、[分析] ペインにイベントを表示します。

    汎用イベントを展開する

  5. [分析] ウィンドウで、プロバイダーからのイベントを見つけて、TraceLogging が機能していることを確認します。

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

    並べ替えるプロバイダーが複数ある場合は、列ヘッダーをクリックして列名で並べ替えると、プロバイダーの検索が容易になる場合があります。

    プロバイダーが見つかると、名前を右クリックし、[ 選択項目にフィルター] を選択します。

    フィルター選択をプロバイダーに

    SimpleTraceLoggingProvider とその値のイベントは、[分析] ウィンドウの下部ウィンドウに表示されます。 プロバイダー名を展開してイベントを表示します。

    simpletraceloggingprovider からイベントを表示する

    WPA の使用の詳細については、「Windows パフォーマンス アナライザー」を参照してください。

まとめと次のステップ

WPR と WPA を使用して ETW イベントを記録および表示するプロセスは、TraceLogging イベントにも同様に適用されます。

その他の トレース ログの例については、「C/C++ トレース ログ の例」を参照してください。