範例 9:建立TMF檔案
下列命令會指示 Tracefmt 格式化及顯示 Tracedrv.etl 中的追蹤訊息,這是 Tracedrv 所產生的追蹤記錄。 TraceDrv 是專為軟體追蹤設計的範例驅動程式,可在 GitHub 上的 Windows 驅動程式範例 存放庫中取得。
此命令包含 -i 參數,指示 Tracefmt 建立 Tracedrv 的 TMF 檔案。
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 映射檔的完整路徑,Tracedrv.sys。
-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.txt,這是一個文本檔,其中包含 Tracedrv.etl 中追蹤訊息的格式版本。 下列文字顯示 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)