예제 9: TMF 파일 만들기

다음 명령은 Tracefmt가 Tracedrv에서 생성된 추적 로그인 Tracedrv.etl에서 추적 메시지의 형식을 지정하고 표시하도록 지시합니다. 소프트웨어 추적용으로 설계된 샘플 드라이버인 TraceDrv는 GitHub의 Windows 드라이버 샘플 리포지토리에서 사용할 수 있습니다.

명령에는 Tracefmt가 Tracedrv에 대한 TMF 파일을 만들도록 지시하는 -i 매개 변수가 포함됩니다.

tracefmt d:\tracedrv\tracedrv.etl -i d:\tracedrv\tracedrv.sys -r d:\tracedrv 
-p d:\tracedrv\tmfs -o d:\tracedrv\tracedrv1.txt -v

명령은 -i 매개 변수를 사용하여 WDK에서 Tracedrv.sys Tracedrv의 이미지 파일에 대한 정규화된 경로를 나타냅니다.

-i d:\tracedrv\tracedrv.sys

-r 매개 변수를 사용하여 Tracedrv, Tracedrv.pdb에 대한 PDB 기호 파일의 전체 버전에 대한 정규화된 경로를 나타냅니다. 이 매개 변수를 사용하여 경로를 지정하지만 파일 이름은 지정하지 않습니다. Tracefmt는 -i로 지정된 이미지 파일을 기반으로 기호 파일의 올바른 버전을 찾습니다.

-r d:\tracedrv

명령은 -p 매개 변수를 사용하여 Tracefmt를 지시하여 Tracedrv에 대해 만든 TMF 파일을 d:\tracedrv\tmfs 디렉터리에 배치합니다.

-p d:\tracedrv\tmfs

명령은 -o 매개 변수를 사용하여 Tracefmt를 지시하여 서식이 지정된 추적 메시지의 출력 파일을 d:\tracedrv\tracedrv1.txt 파일에 배치합니다. 또한 이 매개 변수는 요약 파일을 Tracedrv.txt.sum 파일 이름을 가진 동일한 디렉터리에 배치합니다.

-o d:\tracedrv\tracedrv1.txt

-v 매개 변수는 자세한(자세한) 메시지를 요청합니다.

이 명령에 대한 응답으로 Tracefmt는 d:\tracedrv 디렉터리에서 Tracedrv.sys 대한 PDB 파일을 찾고 찾습니다. PDB 파일에서 추적 메시지 서식 지정 명령을 추출하고 다음 출력의 굵은 형식으로 문에 표시된 것처럼 TMF 파일에 저장합니다. TMF 파일의 이름은 Tracedrv에서 추적 공급자의 메시지 GUID 입니다. 또한 Tracefmt는 TMC(추적 메시지 컨트롤) 파일을 만들어 동일한 디렉터리에 배치합니다.

Tracefmt는 TMF 파일을 만든 후 파일을 읽어 Tracedrv.etl 추적 로그에서 추적 메시지에 대한 서식 지정 지침을 찾습니다. Default.tmf 파일을 살펴보고 d:\tracedrv\tmfs 디렉터리에서 만든 TMf 파일을 찾습니다.

데이터의 서식을 지정하기 전에 Tracefmt는 추적 로그에 대한 데이터를 표시합니다. 데이터는 Logfile d:\tracedrv\tracedrv.etl 문으로 시작합니다.

출력의 최종 문은 Tracefmt가 추적 로그의 13개 이벤트의 서식을 성공적으로 지정하고 Tracedrv1.txt 및 Tracedrv1.txt.sum 파일을 만들었다는 것을 보여줍니다.

Setting log file to: d:\tracedrv\tracedrv.etl

Searching for matching PDB to d:\tracedrv\tracedrv.sys
Current Symbol Search Path = d:\tracedrv

Extracting TMF files out of found PDB files
DBGHELP: d:\tracedrv\tracedrv.pdb - OK
tracefmt : info BNP0000: WPPFMT generating d:\tracedrv\tmfs\1606d1a7-1682-57d1-65f7-36693800e096.tmf for d:\tracedrv\tracedrv.pdb
tracefmt : info BNP0000: WPPFMT generating d:\tracedrv\tmfs\d58c126f-b309-11d1-969e-0000f875a5bc.tmc for d:\tracedrv\tracedrv.pdb
Examining C:\WinDDK\5066\tools\tracing\i386\default.tmf for message formats,  3 found.
Searching for TMF files on path: d:\tracedrv\tmfs
Logfile d:\tracedrv\tracedrv.etl:
        OS version              5.1.2600  (Currently running on 5.1.2600)
        Start Time              2005-06-10-14:25:30.827
        End Time                2005-06-10-14:26:14.371
        Timezone is             Pacific Standard Time (Bias is 480mins)
        BufferSize              8192 B
        Maximum File Size       0 MB
        Buffers  Written        2
        Logger Mode Settings    (0) Logfile Mode is not set
        ProcessorCount          1
06/10/2005-21:25:45.539 ::        1: Filled=     696, Lost=  0 TotalLost= 0

Processing completed   Buffers: 1, Events: 13, EventsLost: 0 :: Format Errors: 0, Unknowns: 0

Event traces dumped to d:\tracedrv\tracedrv1.txt
Event Summary dumped to d:\tracedrv\tracedrv1.txt.sum

이 Tracefmt 실행의 기본 출력은 tracedrv.etl에 있는 추적 메시지의 형식이 지정된 버전을 포함하는 텍스트 파일인 Tracedrv.txt. 다음 텍스트는 Tracedrv.txt 의 내용을 보여 줍니다.

EventTrace
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]IOCTL = 1
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]Hello, 1 Hi
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]Hello, 2 Hi
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]Hello, 3 Hi
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]Machine State :: Offline
[0]0338.0E40::06/10/2005-14:25:43.968 [tracedrv]Function Return=0x8000000f(STATUS_DEVICE_POWERED_OFF)
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]IOCTL = 2
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]Hello, 1 Hi
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]Hello, 2 Hi
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]Hello, 3 Hi
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]Machine State :: Offline
[0]0338.0E40::06/10/2005-14:25:45.539 [tracedrv]Function Return=0x8000000f(STATUS_DEVICE_POWERED_OFF)