共用方式為


範例 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)