추적 로깅 데이터 캡처 및 보기
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을 사용하여 추적 데이터를 캡처하려면
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>
커널 모드 공급자의 경우 EventProvider Id 요소에 NonPagedMemory="true" 특성을 추가해야 합니다.
<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 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를 사용하여 추적 로깅 데이터 보기
현재 WPA는 TraceLogging에서 생성하는 etl 파일을 보는 데 사용할 수 있는 유일한 뷰어입니다.
WPA를 시작합니다.
<path to wpr>\wpa.exe
추적 파일(.etl)을 로드합니다.
공급자 이벤트를 봅니다. 그래프 Explorer 시스템 활동을 확장합니다.
제네릭 이벤트를 두 번 클릭하여 분석 보기에서 봅니다.
분석 보기에서 공급자의 이벤트를 찾아 로깅이 작동하는지 확인합니다.
제네릭 이벤트 테이블의 공급자 이름 열에서 공급자 이름이 있는 행을 찾아 선택합니다.
열 머리글을 클릭하여 열 이름을 기준으로 정렬하면 공급자를 더 쉽게 찾을 수 있습니다. 공급자를 찾으면 이름을 마우스 오른쪽 단추로 클릭하고 선택 영역으로 필터링을 선택합니다.