Tracelog 命令语法

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

注意

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

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

参数

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

[操作]

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

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

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

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

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

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 命令与 -f Logfile 选项结合使用,将当前缓冲区中的跟踪消息刷新到指定的跟踪日志 (.etl) 文件。 此参数仅适用于缓冲跟踪会话(-buffering);对于其他跟踪会话类型, 将忽略 -f 参数。

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

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

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

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

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

-remove GlobalLogger
删除并重新初始化全局记录器跟踪会话的注册表值。 它将 Start 条目的值设置为 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。

-超时 价值
指定在启用具有 tracelog -enable 命令的提供程序时要使用的超时值(毫秒)。 默认超时为 0。

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

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

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

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

在 tracelog -update 命令中,仅当更新专用跟踪会话(-um)时,-guid 参数才有效。若要在会话运行时添加或删除标准跟踪会话中的提供程序,请使用 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 的命令中有效。

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

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

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

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

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

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

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

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

使用 -pid 指定 进程。 请勿将 -guid 与 -critsec 一起使用。 系统为关键节跟踪定义自定义 GUID (CritSecGuid)。 不能在同一命令中使用 -heap-critsec

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

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

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

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

-enableproperty n
有关说明和支持的值,请参阅 EnableParameters 结构中 EnabledProperties 的说明(作为参数传递给 EnableTraceEx2)。

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

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

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

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

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

-旗

注意

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

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

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

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

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

-英尺 FlushTime
指定刷新跟踪消息缓冲区的频率(以秒为单位)。 最小刷新时间为 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 内核记录器跟踪会话中无效。

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

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

-高频
启用硬页错误跟踪(需要磁盘访问才能解决的页面错误)。 此参数仅适用于 NT 内核记录器跟踪会话。

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

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

-img
启用图像加载事件的跟踪。 此参数仅适用于 NT 内核记录器跟踪会话。

-独立

注意

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

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

-kb
将千字节(KB)用于日志文件大小。 默认值为 MB(MB)。

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

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

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

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

对内核事件列表使用 -eflag 帮助

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

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

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

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

-lowcapacity

注意

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

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

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

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

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

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

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

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

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

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

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

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

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

使用 -newfile 时,还必须使用 -f LogFile 参数,并且 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 表示进程标识符。 可以使用此参数最多指定 10 个 PID。

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

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

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

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

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

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

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

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

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

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

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

-rt
启动实时跟踪会话。 (跟踪日志会话 (-f) 是默认值。

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

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

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

-SetProfInt n **** src

重要

不建议更改分析间隔。

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

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

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

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

-stackwalk [Events]
指定要收集堆栈的内核事件。 对内核事件列表使用 -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 -start 还是 tracelog -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 时间