全局记录器跟踪会话

全局 记录器跟踪会话 记录在系统完全正常运行之前在启动过程中发生的事件,例如设备驱动程序生成的事件。 它是内置于 Windows 中的保留跟踪Windows。

全局记录器跟踪会话始终将消息写入跟踪日志。 全局记录器不支持实时跟踪会话或缓冲跟踪会话。

由于全局记录器必须在操作系统启动过程中的早期可用,因此使用 HKLM\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger 子项) 中的注册表项 (而不是函数调用来启动和配置全局记录器。 启动后,全局记录器的行为类似于常规事件跟踪会话。

全局记录器跟踪会话使用保留的会话名称"GlobalLogger"。控件 GUID 由常量 GlobalLoggerGuid 表示。 创建全局记录器跟踪会话,然后重启计算机以启动跟踪会话。 一次只能在计算机上运行一个全局记录器跟踪会话。

若要创建全局记录器跟踪会话,请使用 Tracelog。 它会自动创建注册表子项和存储跟踪会话选项的条目。 重新启动计算机时,将启动全局记录器跟踪会话。 有关详细信息,请参阅 Tracelog 命令语法

若要格式化全局记录器跟踪会话中的跟踪消息,请对 WDK 中包含的跟踪消息格式化文件 system.tmf 使用 Tracefmt

由于全局记录器会话由注册表项触发,因此它每次出现在注册表中时都会运行。 若要防止每次系统启动时启动全局记录器会话,请将"开始"条目的值设置为 0 或删除所有注册表项。

可以将全局记录器跟踪会话转换为 NT 内核记录器跟踪会话,从而在启动过程中跟踪内核。 有关信息,请参阅 启动时全局记录器会话

跟踪提供程序(如内核模式驱动程序和用户模式应用程序)可以记录到全局记录器跟踪会话。 这使你能够在系统启动期间跟踪驱动程序或其他跟踪提供程序。 有关信息,请参阅 日志记录到全局记录器会话

全局记录器跟踪会话的限制

全局记录器跟踪会话非常有用,但必须了解其限制:

一次只能运行一个全局记录器会话。

全局记录器会话不会向提供程序发送启用通知。

全局记录器注册表项保留在注册表中,在手动重置或删除它们或使用 tracelog -remove 命令之前有效。 在重置它们之前,每次启动系统时都会启动全局记录器会话。

为Windows记录器跟踪会话永久启用 ACPI 记录器。 此记录器中的跟踪消息显示在跟踪日志中。

如果标准跟踪会话在驱动程序记录到全局记录器会话时启动,驱动程序将切换并开始记录到标准跟踪会话。

全局记录器注册表项

下表显示了配置全局记录器会话的注册表项。 这些条目在 HKLM\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger 子项中。 只需要 "开始 "条目。

除了此表中的注册表项外,还可以在 GlobalLogger 子项下添加 ControlGUID 子项,以表示记录到全局记录器跟踪会话的跟踪提供程序(如驱动程序)。 有关信息,请参阅 日志记录到全局记录器会话

条目 数据类型 说明

启动

REG_DWORD

当设置为 1 (时) ,全局记录器会话在下次系统启动时启动。

0 = 关闭, 1=on

BufferSize

REG_DWORD

指定每个缓冲区的大小, (KB) 。 默认值为 0x40 (64 KB) 。

ClockType

REG_DWORD

指定用于跟踪消息时间戳的计时器。

从 Windows Vista 开始,默认值为 1。 在 Vista Windows操作系统上,默认值为 2

1 = 高分辨率 (性能计数器)

2 = 系统计时器

3 = CPU 周期时钟

EnableKernelFlags

REG_BINARY

将全局记录器会话转换为 NT 内核记录器跟踪会话,并指定内核跟踪中包含的事件。

有关信息,请参阅 启动时全局记录器会话

FileCounter

REG_DWORD

存储全局记录器会话生成的事件跟踪日志文件数。

系统递增此值,直到达到 FileMax 的值。 然后,它将值重置为 0。

此计数器可防止系统覆盖全局记录器跟踪日志文件。

FileMax

REG_DWORD

指定系统允许的最大事件跟踪日志文件数。

当跟踪日志数达到指定的最大值时,系统会开始覆盖日志,从最早的日志开始。

默认值为 0,表示没有最大值。

FileName

REG_SZ

路径 (事件) 日志文件的可选名称和文件名。 默认值为 %SystemRoot%\System32\LogFiles\WMI\trace.log。

FlushTimer

REG_DWORD

指定强制 (跟踪缓冲区) 刷新的秒数。 此强制刷新是每当缓冲区已满且跟踪会话停止时发生的自动刷新之外。

默认值为 0。 默认情况下,只有在缓冲区已满时,才刷新缓冲区。

最小刷新时间为 1 秒。

LogFileMode

REG_DWORD

指定日志会话选项。

仅在 Vista Windows及更高版本的 Windows 中受支持。

MaximumBuffers

REG_DWORD

指定可分配给会话的最大缓冲区数。 默认值为 25 0x19 (25) 。

MaximumFileSize

REG_DWORD

指定事件跟踪日志文件的最大大小。 默认情况下,没有最大文件大小。

MinimumBuffers

REG_DWORD

指定会话启动时分配的缓冲区数。 默认值为 0x3。

状态

REG_DWORD

存储尝试启动全局记录器跟踪会话的返回代码。

如果会话无法启动,则此项的值为 Win32 错误代码。 如果会话已启动,则此条目的值ERROR_SUCCESS。

创建的这些注册表项保留在注册表中,并且有效,直到删除它们或更改其值。 因此,在全局记录器会话运行后,使用 tracelog -remove GlobalLogger 命令将 Start 条目的值设置为 0,并删除其他全局记录器注册表项。 否则,每次重新启动计算机时都会运行全局记录器会话,并且生成的日志文件可能会增长到非常大的大小。

日志记录模式常量

下表显示 HKLM\System\CurrentControlSet\Control\WMI\GlobalLogger 子项中 LogFileMode 注册表项的有效值。 此项用于设置全局记录器跟踪会话的选项,包括用于实时跟踪会话、专用跟踪会话、循环日志记录和缓冲的选项, (无日志) 。 此注册表项仅在 Windows Vista 及更高版本的 Windows 中受支持。

此注册表项对应于该注册表结构的 LogFileMode EVENT_TRACE_PROPERTIES成员。 其值对应于日志记录模式常量。 EVENT_TRACE_PROPERTIES文档中介绍了日志记录Microsoft Windows SDK常量。

此表在此处显示,显示常量的十六进制值。 使用这些值或这些值的总和来表示 LogFileMode 注册表项中的常量。

“值” 返回的常量 说明

0x0

EVENT_TRACE_FILE_MODE_NONE

不创建事件跟踪日志文件。

0x1

EVENT_TRACE_FILE_MODE_SEQUENTIAL

事件跟踪日志文件是按顺序的。

0x2

EVENT_TRACE_FILE_MODE_CIRCULAR

事件跟踪日志文件是循环的。

0x4

EVENT_TRACE_FILE_MODE_APPEND

将跟踪消息追加到现有日志文件。 此模式仅对顺序文件有效。

0x8

EVENT_TRACE_FILE_MODE_NEWFILE

每当现有文件达到 MaximumFileSize 条目的值时,创建新的事件跟踪日志文件 (上表) 。

0x20

EVENT_TRACE_FILE_MODE_PREALLOCATE

为事件跟踪日志文件保留空间。

仅对 EVENT_TRACE_FILE_MODE_SEQUENTIAL 或 EVENT_TRACE_FILE_MODE_CIRCULAR 有效,不适用于 EVENT_TRACE_FILE_MODE_NEWFILE。

0x40

EVENT_TRACE_NONSTOPPABLE_MODE

调用 StopTrace 不会停止跟踪会话。

此功能可防止用户停止系统诊断和优化所需的跟踪会话。

0x100

EVENT_TRACE_REAL_TIME_MODE

指定实时跟踪会话。

0x200

EVENT_TRACE_DELAY_OPEN_FILE_MODE

仅限内部使用。

0x400

EVENT_TRACE_BUFFERING_MODE

事件保留在缓冲区中。 它们永远不会写入日志文件或传递到跟踪使用者。

0x800

EVENT_TRACE_PRIVATE_LOGGER_MODE

指定专用跟踪会话。 此标志对全局记录器跟踪会话无效。

0x1000

EVENT_TRACE_ADD_HEADER_MODE

仅限内部使用。

0x2000

EVENT_TRACE_USE_KBYTES_FOR_SIZE

解释 MaximumFileSize 的值(以 KB 为单位,而不是 MB)。

0x4000

EVENT_TRACE_USE_GLOBAL_SEQUENCE

为跟踪消息生成全局序列号。 这些数字对于计算机上所有跟踪会话都是唯一的。

默认情况下,跟踪消息没有任何序列号。

0x8000

EVENT_TRACE_USE_LOCAL_SEQUENCE

为跟踪消息生成本地序列号。 这些数字在跟踪会话中是唯一的。

默认情况下,跟踪消息没有任何序列号。

0x10000

EVENT_TRACE_RELOG_MODE

仅限内部使用。

0x80000

EVENT_TRACE_KD_FILTER_MODE

将跟踪消息重定向到内核调试器,将跟踪缓冲区大小设置为 3 KB,这是调试器的最大缓冲区大小。

0x1000000

EVENT_TRACE_MODE_RESERVED

对全局记录器跟踪会话无效。

0x01000000

EVENT_TRACE_USE_PAGED_MEMORY

从可分页内存分配跟踪会话缓冲区。 默认情况下,缓冲区从不可分页的内存分配。