다음을 통해 공유


추적 로깅 데이터 캡처 및 보기

WPT(Windows Performance Tools)의 최신 내부 버전을 사용하여 TraceLoggging 데이터를 캡처하고 볼 수 있습니다. 계측을 게시하기 전에 TraceLogging 공급자 코드를 테스트하여 이벤트 데이터가 생성되고 적절한 시기에 의미 있는 데이터를 생성하는지 확인해야 합니다.

계측이 올바른지 확인하는 프로세스에는 다음 두 단계가 포함됩니다.

  • 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를 지정합니다.

    참고 커널 모드 공급자의 경우 EventProvider Id 요소에 NonPagedMemory="true"를 추가합니다. 다음 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. 커널 모드 공급자의 경우 EventProvider Id 요소에 NonPagedMemory="true" 특성을 추가해야 합니다.

    <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 Performance Recorder 사용자 인터페이스(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를 사용하여 추적 로깅 데이터 보기

현재 WPA는 TraceLogging에서 생성하는 etl 파일을 보는 데 사용할 수 있는 유일한 뷰어입니다.

  1. WPA를 시작합니다.

    <path to wpr>\wpa.exe
    
  2. 추적 파일(.etl)을 로드합니다.

  3. 공급자 이벤트를 봅니다. 그래프 Explorer 시스템 활동을 확장합니다.

  4. 제네릭 이벤트를 두 번 클릭하여 분석 보기에서 봅니다.

  5. 분석 보기에서 공급자의 이벤트를 찾아 로깅이 작동하는지 확인합니다.

    제네릭 이벤트 테이블의 공급자 이름 열에서 공급자 이름이 있는 행을 찾아 선택합니다.

    열 머리글을 클릭하여 열 이름을 기준으로 정렬하면 공급자를 더 쉽게 찾을 수 있습니다. 공급자를 찾으면 이름을 마우스 오른쪽 단추로 클릭하고 선택 영역으로 필터링을 선택합니다.