Tracelog 命令语法

Tracelog 具有启动、停止和控制 跟踪会话的命令 (或操作) 。

注意

若要控制跟踪会话,你必须是计算机上的性能日志用户组或管理员组的成员, (以管理员身份运行) 。

    tracelog [actions] [options] | [-h | -help | -?] 

参数

有关 Tracelog 参数的信息,请参阅 [actions] [options]。

[actions]

-addautologger [LoggerName]
为自动记录器会话配置注册表项。 自动记录程序会话是在系统启动期间跟踪驱动程序或其他跟踪提供程序的活动的首选方法。 必须使用 -sessionguid 选项指定会话 GUIDtracelog -addautologger 命令采用与 Tracelog -start 命令相同的选项。

-capturestate [LoggerName]
请求对 LoggerName 启用的所有提供程序记录状态信息。 启用的关键字有助于确定记录的信息类型。

-disable [LoggerName]
禁用指定的跟踪提供程序。 禁用提供程序后,它会继续运行,但会停止生成跟踪消息。

tracelog -stop 命令在停止会话之前禁用跟踪提供程序。 在停止跟踪会话之前,无需禁用提供程序。 但是,可以使用 tracelog -disable 命令禁用所选提供程序,而无需停止跟踪会话。

禁用会阻止跟踪提供程序将跟踪消息发送到跟踪会话缓冲区,但它不会刷新缓冲区或停止跟踪会话。 使用 tracelog -flush 命令刷新缓冲区,使用 tracelog -stoptracelog -x (停止所有) 命令以停止跟踪会话。

Tracelog 使用 EnableTrace 函数实现 tracelog -disable 命令。 有关此函数的详细信息,请参阅 Microsoft Windows SDK 文档。

-enable [LoggerName]
LoggerName 跟踪会话启用一个或多个跟踪提供程序。

启用提供程序时,提供程序会生成跟踪消息并将其发送到跟踪会话的缓冲区。 如果在启用提供程序时未 (运行或未加载) ,系统会 预先注册 提供程序,即在 ETW 注册数据库中为提供程序保留空间并保存 enable 命令。 当提供程序启动并实际注册时,它将收到保存的 enable 命令,并开始向会话发送跟踪消息。

tracelog -start 命令启用由 tracelog -start 命令中的可选 -guid 参数指定的任何提供程序。 无需提交单独的 tracelog -enable 命令。

可以使用 tracelog -enable 命令将提供程序添加到正在运行的跟踪会话、更改提供程序跟踪时的标志和级别,或使用 tracelog -disable 命令重新启用已禁用的提供程序。

使用 tracelog -enable 命令时,首先提交 tracelog -start 命令以启动跟踪会话,然后提交 tracelog -enable 命令以启用提供程序。

可以重复启用正在运行的提供程序,而无需禁用它。 (可以执行此操作以更改标志和级别。)

使用 -flag 和 - level 参数指定的跟踪标志和跟踪 级别 将传递给 -guid 参数表示的所有跟踪提供程序。 若要为每个跟踪提供程序指定不同的标志和级别,请使用其自己的标志和级别设置为每个提供程序提交单独的 tracelog -enable 命令。

如果在全局记录器跟踪会话运行时启用任何 NT 内核记录器标志 (如 -noprocess-nothread-fio-cm) ,则全局记录器会话将转换为 NT 内核记录器跟踪会话。 此功能旨在跟踪启动过程中的内核事件。

-enableex [LoggerName]
-enable 相同。 在 Tracelog 的未来版本中,可能会删除此选项。

-enumguid
枚举系统上向 Windows (ETW) 事件跟踪注册 的 (或列表) 提供程序。 有关枚举显示的说明,请参阅 Tracelog Enumguid Display

Tracelog 使用 EnumerateTraceGuids 函数实现 tracelog -enumguid 命令。 有关此函数的详细信息,请参阅 Microsoft Windows SDK 文档。

-enumguidex [#guid]
枚举系统上向 Windows (ETW) 事件跟踪注册 的 (或列表) 提供程序。 有关 EnumguidEx 显示的说明,请参阅 Tracelog Enumguid Display

Tracelog 使用 EnumerateTraceGuidsEx 函数来实现 tracelog -enumguidex 命令。 有关此函数的详细信息,请参阅 Microsoft Windows SDK 文档。

-flush [LoggerName]
刷新 LoggerName 跟踪会话的活动缓冲区。 如果未指定 LoggerName ,Tracelog 将刷新 NT 内核记录器跟踪会话的缓冲区。

除了跟踪消息缓冲区已满、跟踪会话停止时自动进行的刷新之外,还包含刷新计时器 (-ft) 。

刷新跟踪会话的缓冲区时,缓冲区中的事件会立即传递到跟踪日志或跟踪使用者。

刷新不会禁用跟踪提供程序或重定向跟踪消息。 刷新缓冲区后,跟踪提供程序将继续将事件写入缓冲区。

Tracelog 使用 FlushTrace 函数实现 tracelog -flush 命令。 有关此函数的详细信息,请参阅 Microsoft Windows SDK 文档。

可以使用 tracelog -flush 命令和 -fLogfile 选项将当前位于缓冲区中的跟踪消息刷新到指定的 跟踪日志 (.etl) 文件。 此参数仅适用于缓冲跟踪会话 (-buffering) ;对于其他跟踪会话类型, 将忽略 -f 参数。

此刷新仅影响缓冲区的当前内容。 它不会将将来的跟踪消息重定向到跟踪日志。

-l [-lp]
列出计算机上运行的所有跟踪会话的属性。

如果传递 -lp 选项,Tracelog 还将列出每个会话启用的所有提供程序。

-q [LoggerName] [-lp]
列出 (查询) 指定跟踪会话的属性。 如果未指定 LoggerName,Tracelog 将查询 NT 内核记录器跟踪会话

如果传递 -lp 选项,Tracelog 还将列出为会话启用的所有提供程序。

-remove GlobalLogger
删除并重新初始化全局记录器跟踪会话的注册表值。 它将“开始”项的值设置为 0, (不启动) 并删除其他注册表项。 tracelog -remove 命令仅适用于全局记录器跟踪会话。 所有其他会话名称值都无效。

不需要 tracelog -remove 命令。 但是,如果未将 “开始” 条目的值设置为 0,则每次重新启动系统时都会启动全局记录器会话。

如果不使用 tracelog -remove 命令,则上一个会话中的选项仍位于注册表中,并且它们将用于新会话,除非你为相同选项提交具有不同值的 tracelog -start 命令。

-start [LoggerName]
使用选择表示跟踪会话的 LoggerName 启动跟踪会话。

使用 GlobalLogger 作为 LoggerName 指定 全局记录器跟踪会话。 重启计算机时,会话将启动。

LoggerName 可以是符合 Windows 命名准则的任何名称,最多 1,024 个字符。 如果名称包含空格,请将名称括在引号中。 Tracelog 不区分大小写。

默认值为“NT 内核记录器”。 如果省略此参数,Tracelog 将启动 NT 内核记录器跟踪会话 ,并在使用 -guid 参数指定其他跟踪提供程序时声明错误。

-stop [LoggerName]
禁用指定跟踪会话中的提供程序,然后终止会话。

tracelog -stop 命令会禁用跟踪提供程序并停止跟踪会话。 tracelog -disable 命令仅禁用跟踪提供程序。

如果启动用于跟踪内核事件的 启动时全局记录器会话 ,则需要使用 命令 tracelog -stop “NT Kernel Logger”tracelog -stop GlobalLogger 来停止它。 使用任一命令来停止 全局记录器跟踪会话 跟踪会话时,Tracelog 会停止提供程序,但它不会重置注册表项的值。 若要重置全局记录器注册表项的值,请使用 tracelog -remove

-systemrundown [LoggerName]
请求 SystemTraceProvider 记录定向到 LoggerName 会话的 崩溃事件。 有关启动跟踪会话的信息,请参阅 配置和启动 SystemTraceProvider 会话。

此命令仅适用于 Windows 8 及更高版本的 Windows。

-timeout
指定使用 tracelog -enable 命令启用提供程序时使用的超时值,以毫秒 (毫秒) 。 默认超时为 0。

如果超时值为 0,则 Tracelog 将调用每个提供程序的 enable 回调并立即返回,而无需等待回调完成。

若要同步启用提供程序,请指定超时值。 如果指定超时值,Tracelog 将等到每个提供程序的启用回调退出或超时过期。

一次启用多个提供程序时,将按顺序对每个提供程序应用超时。

-update [LoggerName]
tracelog -update 命令在运行跟踪会话时更改该会话的属性。

tracelog -update 命令中,-guid 参数仅在更新专用跟踪会话 (-um) .To 在会话运行时从标准跟踪会话添加或删除提供程序时有效,请使用 tracelog -enabletracelog -disable 命令。

如果启动跟踪日志会话 (-f) ,则可以更新为 (-rt) 的实时会话,但除了跟踪使用者之外,还会继续向跟踪日志发送消息。 无法通过更新从会话中删除日志。 但是,必须先使用 tracelog -flush 命令刷新缓冲区,然后才能将实时消息传送添加到跟踪日志会话。

如果 (-rt) 启动实时会话,然后更新到跟踪日志会话 (-f) ,则新的跟踪消息不再直接发送到跟踪使用者;它们仅发送到跟踪日志。 若要将跟踪日志添加到实时跟踪会话,请在 tracelog -update 命令中使用 -rt 和 -f。 必须先使用 tracelog -flush 命令刷新缓冲区,然后才能将实时消息传送添加到跟踪日志会话。

无法更新 全局记录器跟踪会话

对于专用 (用户模式) 跟踪会话,只能更新日志文件名 (-f) ,刷新计时器值 (-ft) 。

若要更新标志和级别,请使用 tracelog -enable 命令使用新的标志或级别重新启用提供程序。

Tracelog 使用 ControlTrace 函数实现 tracelog -update 命令。 有关此函数的详细信息,请参阅 Microsoft Windows SDK 文档。

[options]

-addtotriagedump

注意

除非可能需要使用调试器查看内核转储中的事件,否则不应使用此选项。

指定会话的任何活动缓冲区都可以添加到会审内存转储。 会审转储的大小有限,如果会话的缓冲区导致转储超过其最大大小,则会遗漏缓冲区。

-附加
将跟踪消息追加到 -f 参数指定的事件跟踪日志 (.etl) 文件。 默认为创建新文件。

此参数仅在包含 -f 且不包含 -rt-cir 的命令中有效。

-bBufferSize
指定为跟踪会话分配的每个缓冲区的大小(以 KB 为单位)。 默认值由处理器数、物理内存量和使用的操作系统决定。

-btn
指定在开始刷新缓冲区之前要填充的缓冲区数 (n) 。 此选项从 Windows 8.1 开始可用。

-缓冲
启动缓冲跟踪会话。

在缓冲跟踪会话中,跟踪消息保留在跟踪缓冲区中。 它们不会发送给跟踪使用者或记录在跟踪日志中。

-cirMaxFileSize
指定文件末尾的循环日志记录 (,在事件跟踪日志 (.etl) 文件中记录) 最早的消息。 MaxFileSize 指定文件的最大大小(以 MB 为单位)。 如果没有 MaxFileSize 值,则忽略此参数。

默认为无文件大小限制的顺序日志记录。

-厘米
启用注册表 (Configuration Manager) 访问跟踪。 此参数仅对 NT 内核记录器跟踪会话有效。

-critsec
跟踪专用跟踪会话中进程的关键节事件。 可以在任何用户模式进程上启动关键节进程记录器,即使是未检测进行跟踪的进程。

使用 -pids 指定进程。 不要将 -guid-critsec 一起使用。 系统为关键部分跟踪定义自定义 GUID (CritSecGuid) 。 不能在同一命令中使用 -heap-critsec

-dpcisr
支持跟踪延迟过程调用 (DPC) 、中断服务请求 (ISR) 、映像加载事件 (-img) ,以及内核中的上下文切换。 此参数仅对 NT 内核记录器跟踪会话有效。

此选项仅在 Windows Vista 的 Windows 驱动程序工具包及更高版本的 WDK 中包含的 Tracelog 版本中受支持。 -dpcisr 选项不能与 -eflag 选项一起使用。

-UsePerfCounter 参数与 -dpcisr 配合使用。 Tracerpt(一种用于设置 DPC/ISR 事件格式和解释的工具)需要此参数,它为每个事件提供唯一的时间戳。 有关解释和设置这些事件格式的信息,请参阅下面的“注释”。

-eflagn [flag...]
使用 NT 内核记录器跟踪会话的其他标志启用内核事件,最明显的是启用 DPC、ISR 和上下文切换事件的跟踪的标志。 -eflag 选项不能与 –dpcisr 选项一起使用。

-enablepropertyn
有关说明和支持的值,请参阅作为参数传递给 EnableTraceEx2EnableParameters 结构中 EnabledProperties 的说明。

-EventIdFilter {-in-out|} **** n **** id1 id2 ...
指定具有 n 个事件 ID 的事件 ID 筛选器, (允许) 最多 64 个事件 ID。 此选项从 Windows 8.1 开始可用。

-ExeFilterExecutable_file [;Executable_file ...]
指定要筛选的可执行文件的名称。 可以指定文件列表。 使用分号分隔文件的名称。 未列出的文件将被排除。 此选项从 Windows 8.1 开始可用。

-f [LogFile]
启动跟踪日志会话。 LogFile 指定事件跟踪日志 (.etl) 文件 (可选) 路径和文件名。 默认值为 C:\LogFile.etl。 若要将文件放在远程计算机上,请在路径中包含计算机名称或 IP 地址。

如果将 -rt-f 一起使用,则跟踪消息将发送到使用者和事件跟踪日志文件。 不能将 -rt-f-buffering 一起使用。

-fio
启用文件 I/O 事件的跟踪。 此参数仅对 NT 内核记录器跟踪会话有效。

-flagFlag

注意

标志已被关键字取代。 除非启用 WPP 提供程序,否则请使用 -matchanykw

指定跟踪会话中提供程序的跟踪标志。 标志值确定跟踪提供程序生成的事件。

标志 表示跟踪提供程序中定义的十进制或十六进制格式的标志值。 默认值为 0。 保留从 0x01000000 到 0xFF000000 的值供将来使用。

标志值的含义由每个跟踪提供程序独立定义。 通常,标志表示越来越详细的报告级别。

tracelog -start 命令中指定的标志值适用于跟踪会话中的所有跟踪提供程序。 若要为每个跟踪提供程序设置不同的标志,请使用 tracelog -enable

-ftFlushTime
指定刷新跟踪消息缓冲区的频率(以秒为单位)。 最短刷新时间为 1 秒。 默认值为 0 (无强制刷新) 。

此强制刷新是跟踪消息缓冲区已满和跟踪会话停止时自动发生的刷新的补充。

请参阅 tracelog -flush 命令

-guid {#GUID | file | *name}
启用指定的跟踪提供程序。

如果指定了文件,Tracelog 将为文件中指定的所有提供程序启用跟踪。 文件的格式必须设置为:

; comment line
guid1;matchanykeyword;level
guid2;matchanykeyword;level

如果指定了提供程序 GUID,则 GUID 必须由数字符号 (#) 。

如果指定了提供程序名称,则名称必须以星号 (*) 。 然后,将使用与 相同的算法将名称转换为 GUID。NET 的事件源。 然后,此 GUID 将用于启用提供程序。

如果省略此参数,则任何跟踪提供程序都不会向跟踪会话发送消息。 但是,启动跟踪会话后,可以使用 tracelog -enable 命令为会话启用一个或多个跟踪提供程序。

-Gs
为每个跟踪消息生成全局序列号。

全局序列号对于计算机上的所有跟踪会话都是唯一的。 默认情况下,没有序列号。

此参数在 NT 内核记录器跟踪会话中无效。

-堆
跟踪用户模式进程的堆内存事件。 可以在任何用户模式进程上启动堆进程记录器,即使是未检测进行跟踪的进程。

使用 -pids 指定进程。 不要将 -guid-heap 一起使用。 系统为堆内存跟踪定义自定义 GUID (HeapGuid) 。 不能在同一命令中使用 -heap-critsec

-高频
支持跟踪硬页错误 (需要磁盘访问才能解决) 的页错误。 此参数仅对 NT 内核记录器跟踪会话有效。

-hybridshutdown {stop|persist}
控制混合关闭记录器行为。 此选项从Windows 8开始可用。

停止 将导致会话在系统执行混合关闭时停止。 持久化 将导致会话在系统从混合关闭再次启动后继续。

-Img
启用图像加载事件的跟踪。 此参数仅对 NT 内核记录器跟踪会话有效。

-独立

注意

应在每个跟踪会话上启用独立模式。

在跟踪会话上启用独立模式。 独立模式允许会话收集其他非独立模式会话已删除的事件。 此选项从 Windows 8.1 开始可用。

-K b
对日志文件大小使用 kb (kb) 。 默认值为 mb (MB) 。

-Kd
将跟踪消息重定向到 KD 或 Windbg,以附加的为准。 此参数还将跟踪缓冲区大小设置为 3 KB(调试器的最大缓冲区大小),并忽略命令中的任何 -b 参数。

使用 -kd 提交 Tracelog 命令时,调试器必须正在运行。 否则,Tracelog 将停止响应。

有关在内核调试器中显示跟踪消息的信息,请参阅注释。

-Lbr *EventName[**+EventName+...]:Filter[,*Filter,...]
对内核事件配置 LBR 跟踪。

使用 -eflag 帮助 获取内核事件列表。

-leveln
指定跟踪会话中提供程序的跟踪 级别 。 级别确定跟踪提供程序生成的事件。

Level 表示十进制或十六进制格式的级别值。 默认值为 0。

级别值的含义由每个跟踪提供程序独立定义。 通常,跟踪级别表示事件的严重性, (信息、警告或错误) 。

tracelog -start 命令中指定的级别值适用于跟踪会话中的所有跟踪提供程序。 若要为每个跟踪提供程序设置不同的级别,请使用 tracelog -enable

-lowcapacity

注意

除非有必要降低内存成本,否则不应使用此选项。 使用此选项会使每个事件的记录速度变慢。

一次使用单个缓冲区来收集在多个处理器上生成的事件。 此选项选择EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING日志记录模式。 有关详细信息,请参阅 Windows SDK。

-ls
为每个跟踪消息生成本地序列号。

本地序列号在跟踪会话中是唯一的。 默认情况下,没有序列号。

此参数在 NT 内核记录器跟踪会话中无效。

-maxNumberOfBuffers
指定 Tracelog 为跟踪会话分配的最大缓冲区数。 默认值由处理器数、物理内存量和使用的操作系统决定。

-matchallkwn
指定 MatchAllKeyWord 位掩码,该掩码限制提供程序写入的事件类别,并与 -matchanykw 选项结合使用。

此位掩码是可选的。 如果事件的关键字 (keyword) 满足 -matchanykw 选项中指定的条件,则仅当事件关键字 (keyword) 中存在此掩码中的所有位时,提供程序才会写入事件。 如果 -matchanykw 为零,则不使用此掩码。

Tracelog 传递 EnableTraceEx2 函数调用的 MatchAllKeyWord 参数中的值 n。 有关详细信息,请参阅 Windows SDK。

-matchanykwn
指定用于确定提供程序写入的事件类别的 MatchAnyKeyword 位掩码。

如果事件的任何关键字 (keyword) 位与此掩码中设置的任何位匹配,则提供程序将写入事件。 Tracelog 传递 EnableTraceEx2 函数调用的 MatchAnyKeyWord 参数中的值 n。 有关详细信息,请参阅 Windows SDK。

-minNumberOfBuffers
指定最初为存储跟踪消息分配的缓冲区数。 当缓冲区已满时,Tracelog 会分配更多缓冲区,直到达到最大值。 默认值由处理器数、物理内存量和使用的操作系统决定。

-newfileMaxFileSize
每当现有文件到达 MaxFileSize 时, (.etl) 文件创建新的事件跟踪日志。 MaxFileSize 指定每个日志文件的最大大小(以 MB 为单位)。 如果没有 MaxFileSize 值,则忽略此参数。

使用 -newfile 时,还必须使用 -fLogFile 参数, 并且 LogFile 的值必须是包含字符 %d 的名称,以指示小数模式,例如 trace%d.etl。 否则,命令将失败并显示ERROR_INVALID_NAME。 每次创建新文件时,Windows 都会递增文件名中的十进制值。

此参数对于预分配 (-prealloc) 、循环日志记录 (-cir) 、NT 内核记录器会话或专用跟踪会话无效。

-nodisk
禁用对物理磁盘 I/O 事件的跟踪。 此参数仅对 NT 内核记录器跟踪会话有效。

-nonet
禁用 TCP/IP 和用户数据报协议 (UDP) 事件的跟踪。 此参数仅对 NT 内核记录器跟踪会话有效。

-noprocess
禁用对每个进程的开始和结束的跟踪。 此参数仅对 NT 内核记录器跟踪会话有效。

-nothread
禁用对每个线程的开始和结束的跟踪。 此参数仅对 NT 内核记录器跟踪会话有效。

-呼
将可分页内存用于跟踪消息缓冲区。 默认情况下,事件跟踪对缓冲区使用不可分页的内存。

需要不可分页内存的提供程序将无法将事件记录到使用可分页内存的会话。

-pids#PIDs PID [PID...]
指定运行堆内存或关键节跟踪会话的用户模式进程。 仅对 -heap-critsec 有效。

#PIDs 指定使用此参数列出的进程 ID 数。 PID 表示进程标识符。 最多可以使用此参数指定十个 PID。

当提供程序在多个进程中运行时列出多个 PID,例如,当单个程序创建多个进程时。

-PidFilternpid1 pid2 ...
指定具有 n 个 Pid 的 Pid 筛选器, (允许的最大) 8 个 Pid。 此选项从 Windows 8.1 开始可用。

-pf
启用对所有页面错误进行跟踪。 此参数仅对 NT 内核记录器跟踪会话有效。

-PkgIdFilter包全名 [ **;**包全名...]
指定包 ID 筛选器。 可以指定包文件的列表。 使用分号分隔文件的名称。

-PkgAppIdFilterPRAID [**;**PRAID...]
指定 PRAID) 筛选器 (包相关应用标识符。 PRAID 是包中应用程序的唯一标识符。 可以指定多个 PRAID。 使用分号分隔 ID。 此选项适用于从 Windows 8.1 开始的 UWP 应用。

-PmcCtr1,Ctr2,...:Name+Name+...
(PMC 配置性能监视器计数器,) 对指定的内核事件进行采样。 此选项从Windows 8开始可用。

使用 -ProfileSource 帮助 获取计数器列表。 使用 -eflag 帮助 获取内核事件列表。

-prealloc
在启动会话之前为 .etl 文件保留空间。

此参数需要具有 MaxFileSize-seq-cir。 它在 -newfile 中无效。

-ProfileSourcesrc
配置要使用的分析源。 有关源列表,请使用 命令 tracelog -ProfileSource 帮助。 此选项从Windows 8开始可用。

此选项仅适用于 Windows 8 及更高版本的 Windows。

-Rt
启动实时跟踪会话。 (跟踪日志会话 (-f) 为 default.)

如果使用 -rt-f,则会将跟踪消息发送到跟踪使用者和事件跟踪日志文件。 不能将 -rt-f-buffering 一起使用。 有关详细信息,请参阅 跟踪会话

-安全
在安全模式下启用跟踪。 此选项选择EVENT_TRACE_SECURE_MODE日志记录模式。 将可以将事件记录到会话的人员限制为具有TRACELOG_LOG_EVENT权限的人员。

-sessionguid
指定自动记录器会话 GUID 注册表值。

-SetProfIntn **** src

重要

不建议更改分析间隔。

为指定的源配置分析间隔 (n) ,其中 n 以 100ns 为单位。 默认值为 10000 (相当于 1 毫秒) 。 此选项从Windows 8开始可用。

-seqMaxFileSize
指定文件末尾的顺序日志记录 (,停止记录事件) 事件跟踪日志 (.etl) 文件。 MaxFileSize 指定文件的最大大小(以 MB 为单位)。 如果没有 MaxFileSize 值,则忽略此参数。

默认使用顺序日志记录,但可以使用此参数来设置最大文件大小或使用 -prealloc。 如果没有此参数,则没有文件大小限制。

-sourceguidSourceGuid
指定作为 SourceId 参数传递给 EnableTraceExEnableTraceEx2 函数的 GUID。 SourceId 标识启用提供程序的会话。

-stackwalk [事件]
指定要收集堆栈的内核事件。 使用 -eflag 帮助 获取内核事件列表。 此参数仅对 NT 内核记录器或系统记录器跟踪会话有效。

-StackWalkFilter {-in-out|}nid1 id2 ...
指定具有 n 个事件 ID 的事件 ID 筛选器, (最多允许) 64 个事件 ID。 此选项从 Windows 8.1 开始可用。

-systemlogger
记录器可以接收 SystemTraceProvider 事件。 请参阅 配置和启动 SystemTraceProvider 会话。 此选项从 Windows 8 开始可用。

-um
指定专用跟踪会话 此参数是专用跟踪会话所必需的。

-UseCPUCycle
使用处理器频率 (也称为“CPU 时钟周期”) 来测量每个跟踪消息的时间。

此计时器提供可能的最高分辨率,但它非常敏感,容易出错,尤其是在电源管理的系统和多处理器计算机上。 例如,如果在具有 Arm 处理器的计算机上指定此计时器,则可能会导致无序事件。 相反,建议使用 -UsePerfCounter 进行高分辨率跟踪。

-UsePerfCounter 是事件跟踪的默认计时器。

-UsePerfCounter
记录每个跟踪消息的高分辨率性能计数器时钟的值,而不是较低分辨率的系统时间。

由于性能计数器时钟的计数大约为 100 纳秒,因此它为每个事件提供唯一的时间戳。

-UsePerfCounter 是事件跟踪的默认计时器。

-UseSystemTime
记录系统时间,而不是高分辨率性能计数器时钟时间,并记录每个跟踪消息。 由于系统计时器的分辨率为 10 毫秒 (,而性能计数器时钟) 的分辨率为 100 纳秒,因此多个事件可以具有相同的系统时间。

-UsePerfCounter 是事件跟踪的默认计时器。

-? |帮助 |-?
显示使用情况信息。

备注

以下注释适用于多个 Tracelog 命令。

语法错误

Tracelog 不会显示所有错误语法组合的错误,例如尝试更新无法更改的设置时。 相反,它会忽略命令的无效部分,并显示一条成功消息。

系统记录器

Windows 将跟踪会话用于多种用途,其中一些对正确操作至关重要。 不要停止未启动的任何跟踪会话。

枚举

若要确定 tracelog -starttracelog -enable 命令是否成功,请使用 tracelog -enumguid 命令确定是否启用了提供程序,然后使用 tracelog -l (List) 命令检查跟踪会话的属性。

实时会话和日志会话

跟踪会话既可以是实时跟踪会话,也可以是跟踪日志会话。 如果在同一命令中包含 -rt (实时) 和 -f (日志会话) 参数,则系统会将缓冲区内容发送到日志和跟踪使用者。 但是,必须先使用 tracelog -flush 命令刷新缓冲区,然后才能将实时消息传送添加到跟踪日志会话。

如果启动实时会话 (-rt) ,然后更新到日志会话 (-f) ,则任何新的跟踪消息仅发送到日志文件。 若要将日志文件添加到实时会话,请在 tracelog -update 命令中使用 -rt 和 -f

如果启动日志会话 (-f) ,则可以更新到实时会话 (-rt) ,但消息会继续发送到日志以及跟踪使用者。 无法通过更新从会话中消除日志。

若要显示或保存来自仅实时会话的跟踪消息,还可以使用跟踪使用者(如 Tracefmt)或使用 TraceView(既是跟踪控制器 (,如 Tracelog) )和跟踪使用者。 使用 Tracefmt 时,请务必在 Tracefmt 命令中包含 -rt 参数。

标志和级别

大多数跟踪提供程序不会生成任何跟踪消息,除非标志或级别设置为特定值。 提供程序使用标志或级别来控制跟踪的内容。 如果事件跟踪日志文件为空,请查看跟踪提供程序中的标志和级别。

若要确保始终生成跟踪消息,请完成以下步骤:

  1. flags 参数设置为 0xFFFFFFFF 以启用所有标志设置。

  2. levels 参数设置为 255 以启用所有级别设置。

-eflag 参数

Tracelog 有一个 -eflag (扩展标志) 参数,该参数旨在为 NT 内核记录器跟踪会话启用其他标志,尤其是用于启用 DPC、ISR 和上下文切换事件的跟踪的标志。 由于 tracelog -start 命令现在包含 -dpcisr 参数,因此不再需要使用 -eflag 参数,不建议使用 。

过时的参数

在早期版本的 Tracelog 中, tracelog -start 命令支持 -rt b 参数组合。 此组合已替换为 -buffering 参数,并且不再有效。

删除了 -x 参数,因为停止所有跟踪会话可能会导致系统不稳定。

删除了 -disableex 参数。 请改用 -disable

NT 内核记录器

若要使用 NT 内核记录器启动跟踪会话,请省略 tracelog -start 命令中的会话名称,并且不要使用 -guid 参数指定提供程序 GUID 文件。 “NT 内核记录器” 是默认会话名称。

如果省略会话名称或为 “NT 内核记录器”,则系统将启动 NT 内核记录器跟踪会话,即使使用 -guid 参数指定 除 SYSTEMTraceControlGUID 以外的 GUID(NT 内核记录器跟踪会话的控制 GUID)。 如果指定其他 GUID,系统将返回错误, (“系统记录器不接受应用程序 guid”) ,但仍会启动 NT 内核记录器跟踪会话。

默认情况下,当 Tracelog 启动 NT 内核记录器跟踪会话时,它将启用进程、线程、物理磁盘 I/O 和 TCP/IP 事件的跟踪,但你可以使用参数来禁用这些事件的跟踪并启用其他事件的跟踪。

DPC/ISR 事件

由于 Tracerpt 需要系统性能计数器时钟时间作为时间戳,因此在启动跟踪会话时,请使用 Tracelog -UsePerfCounter 参数。

由于 DPC 和 ISR 事件是由特殊检测收集的,因此它们不会显示在 Tracelog 显示的用于确认命令的表的 “已启用” 跟踪行中。

有关详细信息,请参阅 示例 15:测量 DPC/ISR 时间