커널 디버거에 추적 메시지를 보낼 어떻게 할까요? 있나요?

여러 메서드를 사용하여 추적 메시지를 커널 모드 디버거로 리디렉션할 수 있습니다. 여기서는 몇 가지 설명이 있습니다.

연결된 추적 메시지를 KD 또는 Windbg로 리디렉션할 수 있습니다. 디버거는 디버그(null 모뎀) 케이블이 있는 COM 포트 또는 IEEE 1394 케이블이 있는 1394("firewire") 포트를 통해 연결되어야 합니다. 추적 메시지를 NTSD와 같은 다른 커널 디버거로 리디렉션할 수 없습니다.

디버거에 추적 메시지를 표시하려면 wmitrace.dll 및 traceprt.dll 호스트 컴퓨터의 디버거 검색 경로에 있어야 합니다. 이러한 DLL은 디버깅 도구 for Windows 에도 포함되어 있으므로 디버거가 추적 메시지에 대한 추적 메시지 형식(.tmf) 파일을 찾을 수 있도록 하려면 TMF 파일이 호스트 컴퓨터의 디버거 검색 경로에 있어야 합니다. 디버거의 검색 경로를 설정하려면 !wmitrace.searchpath 특수 디버거 확장을 사용하거나 %TRACE_FORMAT_SEARCH_PATH% 환경 변수의 값을 설정합니다.

자세한 내용은 Windows용 디버깅 도구에서 !wmitrace를 검색하세요.

Logman

다음 Logman 명령을 사용하여 추적 메시지를 커널 모드 디버거로 리디렉션합니다.

logman start TraceSession -ets -mode KernelFilter -bs 3

-ets 매개 변수는 성능 로그 및 경고 서비스에서 제어되지 않는 이벤트 추적 세션을 시작합니다. -mode 매개 변수는 KernelFilter 옵션을 포함하여 고급 옵션을 활성화합니다.

-bs 매개 변수는 추적 세션의 버퍼 크기를 디버거의 최대 버퍼 크기인 3KB로 설정합니다. 이 매개 변수를 생략하면 디버거 세션이 제대로 작동하지 않습니다.

Logman은 Windows XP 이상 버전의 Windows에 포함되어 있습니다.

Tracelog

다음 Tracelog 명령을 사용하여 추적 메시지를 커널 모드 디버거로 리디렉션합니다.

tracelog -start MyTrace -guid MyProvider.ctl -rt -kd

-guid 매개 변수는 추적 공급자를 지정합니다. -rt 매개 변수는 실시간 추적 세션을 지정합니다. -kd 매개 변수는 추적 메시지를 커널 디버거로 리디렉션하고 최대 버퍼 크기를 디버거의 최대값인 3KB로 설정합니다.

예제는 예제 16: 디버거에서 추적 메시지 보기를 참조하세요.

Tracelog는 WDK의 tools\tracing\<Platform> 하위 디렉터리에 있습니다. 여기서 <Platform> 은 i386, amd64 또는 ia64입니다.

TraceView

TraceView 에는 그래픽 사용자 인터페이스가 있습니다.

추적 세션을 만들 때 추적 메시지를 커널 디버거로 리디렉션할 수 있습니다. 로그 세션 옵션 페이지에서 고급 로그 세션 옵션을 클릭하고 로그 세션 매개 변수 옵션 탭을 클릭한 다음 Windbg 옵션의 값을 TRUE로 변경합니다. 추적 세션이 실행되는 동안에는 이 옵션을 변경할 수 없습니다.

TraceView는 WDK의 tools\tracing\<Platform> 하위 디렉터리에 있습니다. 여기서 <Platform> 은 i386, amd64 또는 ia64입니다.