示例 7:自定义跟踪消息前缀

每个跟踪消息都以一个 跟踪消息前缀 开头,该前缀由有关跟踪消息的数据组成。 跟踪消息前缀的格式存储在 %TRACE_FORMAT_PREFIX% 环境变量中。 通过更改环境变量的值,可以自定义跟踪消息前缀,以最有用的格式显示有关跟踪消息的数据。 跟踪消息前缀主题中介绍了默认跟踪消息前缀中的变量以及可在跟踪消息前缀中使用的所有变量。

以下显示显示默认跟踪消息前缀。 跟踪消息由 Tracedrv 生成,Tracedrv 是 Windows 驱动程序工具包 (WDK) 中已启用跟踪的示例驱动程序。

[0]0AF4.0C64::07/25/2003-14:55:39.998 [tracedrv]IOCTL = 1
[0]0AF4.0C64::07/25/2003-14:55:39.998 [tracedrv]Hello, 1 Hi
[0]0AF4.0C64::07/25/2003-14:55:39.998 [tracedrv]Hello, 2 Hi
...

默认前缀的格式如下所示。

[%9!d!]%8!04X!.%3!04X!::%4!s! [%1!s!]

表示以下数据:

[CPUNumber]ProcessID.ThreadID::SystemTime [MessageGUIDFriendlyName]

其中 ,MessageGUIDFriendlyName 默认为在其中生成跟踪提供程序的目录的名称。

若要创建新的跟踪消息前缀,请使用 set 命令重置 %TRACE_FORMAT_PREFIX% 环境变量的值。 例如,

set TRACE_FORMAT_PREFIX=%2!s!: %!FUNC!: %8!04x!.%3!04x!: %4!s!:

此命令设置以下格式的跟踪消息前缀:

SourceFile_LineNumber: FunctionName: ProcessID.ThreadID: SystemTime 

因此,Tracefmt 输出使用新的跟踪消息前缀,如以下显示所示:

tracedrv_c258: TracedrvDispatchDeviceControl: 0af4.0c64: 07/25/2003-13:55:39.998:  IOCTL = 1
tracedrv_c264: TracedrvDispatchDeviceControl: 0af4.0c64: 07/25/2003-13:55:39.998:  Hello, 1 Hi
tracedrv_c264: TracedrvDispatchDeviceControl: 0af4.0c64: 07/25/2003-13:55:39.998:  Hello, 2 Hi
tracedrv_c264: TracedrvDispatchDeviceControl: 0af4.0c64: 07/25/2003-13:55:39.998:  Hello, 3 Hi

...

注意 如果要在命令或批处理文件中设置跟踪前缀,其中百分比符号表示命令行参数的变量,请对前缀变量使用两个连续的百分比符号。 例如,若要在前缀中包含系统时间,请键入 %%4