记录选定的系统事件。
Trace [ -a [ -g ] ] [ -f | -l ] [ -b | -B] [ -c] [ -C [ CPUList | all ]] [ -d ] [ -h ] [ -j Event [ 、Event ] ] [ -k Event [ 、Event ] ] [ -J Event-group [,Event-grou ]] [ -K Event-grou [,Event-grou ]] [ -m Message ] [ -n ] [ -o Name ] [ -o- ] [ -p ] [ -s ] [ -L Size ] [ -T Size ]
trace 守护进程配置一个跟踪会话,并启动系统事件的收集。跟踪功能所收集的数据记录在跟踪日志中。跟踪日志的报告可以用 trcrpt 命令生成。
当用 -a 标志调用时,trace 守护进程就异步运行(即作为一个后台任务)。否则,它就会交互式地运行,并提示您输入子命令。
可以使用系统管理接口工具(SMIT)来运行 trace 守护进程。要使用 SMIT,请输入:
smit trace
共有以下三种跟踪数据收集的方式:
备用(缺省值) | 所有的跟踪事件都在跟踪日志文件中捕获。 |
循环 ( -l) | 跟踪事件包括在内存缓冲区中,不在跟踪日志文件中捕获,直到跟踪数据收集工作停止为止。 |
单一 ( -f) | 当内存跟踪缓冲区已满,且缓冲区中的内容已捕获在跟踪日志文件中时,跟踪事件的收集工作就结束。 |
缓冲区分配 | 跟踪缓冲区可以从内核堆分配,或放入独立的段中。缺省情况下,除非请求的缓冲区大小很大以致不能装入内核堆(这种情况下,则在独立的段中分配缓冲区),否则缓冲区一律都从内核堆中分配。从独立的段分配缓冲区,多少有点妨碍跟踪性能。但是,独立段中的缓冲区不会占用调页空间,只占一点锁定内存。缓冲区分配的类型可以用可选的 -b 或 -B 标志来指定。 |
-a | 异步运行 trace 守护进程(即作为一个后台任务)。一旦以此种方式启动 trace,则可以使用 trcon、trcoff 和 trcstop 命令来分别启动跟踪、停止跟踪或退出跟踪会话。这些命令可以作为链接到 trace 的链路来实现。 |
-b | 从内核堆分配缓冲区。如果不能从内核堆获取所请求的缓冲区空间,则命令失败。
注:
-b 标志只对 32 位内核有效。 |
-B | 在独立段中分配缓冲区。
注:
-B 标志只对 32 位内核有效。 |
-c | 保存跟踪日志文件,添加 .old 到其文件名。 |
-C [ CPUList | all ] | 使用一个缓冲区集合跟踪 CPUList 中的每个 CPU。多个 CPU 可以用逗号隔开,或包含在双引号中然后用逗号或空格隔开。要跟踪所有 CPU,请指定 all。因为该标志对每个 CPU 使用了一个缓冲区集合并为每个 CPU 生成一个文件,所以它可能消耗大量内存和文件空间,因此应该小心使用。产生的文件名为 trcfile、trcfile-0 和 trcfile-1 等,其中 0、1 等是 CPU 编号。如果指定了 -T 或 -L,则大小适用于每一个缓冲区集合和每一个文件。对于单处理机系统,可以指定 -C all,但是带有 CPU 编号列表的 -C 将被忽略。如果 -C 用于指定多个 CPU,如 -Call 或 -C "0 1",则相关的缓冲区不放入系统转储中。
注意: 只有 root 用户才能使用 -C 标志。 |
-d | 禁用自动启动跟踪数据收集。延时启动跟踪数据收集。正常情况下,每当开始 trace 守护进程时,就会自动启动跟踪数据收集。使用 trcon 命令来启动跟踪数据收集。 |
-f | 以单一方式运行 trace。当内存缓冲区已满时,立即停止跟踪数据收集。然后将跟踪数据写入跟踪日志。使用 trcon 命令来重新启动跟踪数据收集,并捕获另一个已满的数据缓冲区。如果在缓冲区满之前发出 trcoff 子命令,就停止跟踪数据收集并将缓冲区当前内容写入跟踪日志。 |
-g | 在一般跟踪通道(通道 1 至 7)中启动跟踪会话。该标志仅当 trace 异步运行(-a)时才有效。命令的返回码就是通道编号;通道编号随后必须用于一般跟踪子例程调用。要停止一般跟踪会话,可使用命令 trcstop -<channel_number>。 |
-h | 省略跟踪日志的头记录。正常情况下,trace 守护进程在跟踪日志开始部位写头记录:日期和时间(通过 date 命令)、系统名称、版本和发行版、节点标识、机器标识(通过 uname -a 命令)以及用户定义的消息。在跟踪日志开始部位,头记录的信息包括在 trcrpt 命令的输出中。 |
-j Event[、Event] | |
-k Event[,Event] | 指定您想要收集(-j)或排除(-k)其跟踪数据的用户定义事件。Event 列表项可以用逗号隔开,或包含在双引号中并用逗号或空格隔开。
|
-J Event-group [, Event-group ] | |
-K Event-group [ ,Event-group] | 指定要被包含(-J)或排除(-K)的事件组。事件组在“调试和性能跟踪”中描述。-J 和 -K 标志除了有事件组而不是个别 hook 标识以外,其它方面均同 -j 和 -k 作用相似。可以指定所有四个标志 -j、-J、-k 和 -K。 |
-l | 以循环方式运行 trace。在停止跟踪数据收集时,trace 守护进程将跟踪数据写入跟踪日志中。仅捕获跟踪数据的最后一个缓冲区。使用 trcoff 命令来停止跟踪数据收集时,应该使用 trcon 命令来重新启动它。 |
-L Size | 用所规定的值来重设缺省跟踪日志文件 1 MB的大小。将文件大小指定为 0,便将跟踪日志文件大小设置为缺省值。
注:在循环方式和备用方式中,跟踪日志文件大小必须至少是跟踪缓冲区大小的两倍。在单一方式中,跟踪日志文件必须至少是缓冲区的大小。有关控制跟踪缓冲区大小的信息,请参阅 -T 标志。 |
-m Message | 指定将要包括在跟踪日志的消息字段头记录中的文本。 |
-n | 将这些信息添加到跟踪日志头:锁定信息、硬件信息以及对于每一个装入程序项的符号名称、地址和类型。 |
-o Name | 重设 /var/adm/ras/trcfile 缺省跟踪日志文件并将跟踪数据写入用户定义的文件。 |
-o - | 重设缺省跟踪日志名称,并将跟踪数据写入标准输出。当使用此标志时, -c 标志被忽略。如果指定 -o- 和 -C,则会产生一个错误。 |
-p | 每一个 hook 都包含当前处理器的 cpuid。该标志仅对 64 位内核跟踪有效。
注:trcrpt 命令会向 cpuid 报告是否指定了该选项。 |
-s | 当填写跟踪日志时,停止跟踪。当跟踪日志填满后,通常trace 守护进程都回绕跟踪日志,并继续收集跟踪数据。在异步操作过程中,该标志可以使 trace 守护进程停止跟踪数据收集。(在交互式操作中,必须用 quit 子命令来停止跟踪。) |
-T Size |
用所规定的值重设缺省跟踪缓冲区 128 KB 的大小。必须以 root 用户来请求 1 MB 以上的缓冲区空间。最大可能的大小为 268435184 字节,除非使用 -f 标志(此时大小为 536870368 字节)。最小可能的大小为 8192 字节,除非使用 -f 标志(此时大小为 16392 字节)。当使用 -f 标志时,8192 和 16392 之间的大小都可使用;但是实际使用的大小为 16392 字节。 注:在循环方式和备用方式中,跟踪缓冲区的大小必须是跟踪日志文件大小的一半,或小于跟踪日志文件大小。在单一方式中,跟踪日志文件必须至少是缓冲区的大小。有关控制跟踪日志文件大小的信息,请参阅 -L 标志。另外也请注意,跟踪缓冲区使用锁定内存,这意味着它们不可页面调度。因此,跟踪缓冲区越大,就有越少的物理内存适用于应用程序。 -f 标志实际上使用了两个缓冲区,它们一起作为单个缓冲区来运行(除了当第一个缓冲区满时,将记录一个缓冲区回绕跟踪 hook 这种情况以外)。 |
当以交互方式运行时,跟踪会识别以下一些子命令:
trcon | 启动跟踪数据收集。 |
trcoff | 停止跟踪数据收集。 |
q 或 quit | 停止跟踪数据收集并退出 trace。 |
! Command | 运行由 Command 参数指定的 shell 命令。 |
? | 显示 trace 子命令摘要。 |
INTERRUPT 信号充当启动和停止跟踪数据收集的开关。中断被设置为 SIG_IGN 用于被跟踪的进程。
trace > !anycmd > q
trace -a; anycmd; trcstop
trace -a; sleep 10; trcstop
trace -a -o /tmp/my_trace_log; anycmd; trcstop
trace -a -k 『20e,20f』; cp /bin/track /tmp/junk; trcstop
在上例中, -k 选项抑制从 lockl 和 unlockl 函数收集事件(20e 和 20f 事件)。
trace -a -j 234 -J tidhk这可以跟踪事件组“tidhk”中的 hook 和 hook 234。
trace -aC all
产生的文件为 /var/adm/ras/trcfile、 /var/adm/ras/trcfile-0、/var/adm/ras/trcfile-1 等等,直至 /var/adm/ras/trcfile-(n-1),其中 n 为系统中 CPU 的数目。
/usr/include/sys/trcmacros.h | 定义 trchook 和 utrchook 宏。 |
/var/adm/ras/trcfile | 包括缺省跟踪日志文件。 |
trcevgrp 命令、trcnm 命令、trcrpt 命令、trcstop 命令。
trchook 子例程、trcgen 子例程、trcstart 子例程、trcon 子例程、trcoff 子例程、trcstop 子例程。
trcgenk 内核服务。
AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Trace Facility Overview。
《AIX 5L V5.2 性能管理指南》中的『用跟踪工具进行性能分析』。
AIX 5L Version 5.2 Kernel Extensions and Device Support Programming Concepts 中的 Debug and Performance Tracing。