文档库 最新最全的文档下载
当前位置:文档库 › AIX 内核跟踪程序-Trace

AIX 内核跟踪程序-Trace

AIX 内核跟踪程序-Trace (一)
供稿者:杜新存




Trace是AIX内置的系统跟踪工具,可以用来收集系统事件(system call,user code,kernel extension等)和时间相关的信息。是用来分析系统和应用程序性能和运行问题的强大工具。trace通常情况下trace占用较少的系统资源,不会对系统产生加大的负载压力,使用的CPU资源不会超过5%,trace以循环方式运行使时,只使用内存buffer,没有硬盘读写操作,不会产生I/O负载。


1. 理解跟踪程序
跟踪程序比传统的访问和给出系统维护的统计信息系统监视服务更灵活。它并没有预先假定需要什么统计信息,相反,跟踪程序提供了事件流并允许用户决定提取什么信息。与传统监视服务相比,数据整理(系统事件向统计信息的转换)大大增加了系统检测。例如,许多系统通过观察任务 A 的运行保存其最小、最大以及平均运行时间并允许提取这一信息。

跟踪程序并不会显著地给检测加重数据整理,而是提供了一种跟踪事件记录流(通常缩写为 events)。没有必要事先决定需要什么统计信息;数据整理很大程度上独立于检测。用户可以从事件流中选择决定任务 A 的最小、最大和平均时间。但是也有以下可能:

当任务 A 被进程 B 调用时提取任务 A 的平均时间

当条件 XYZ 同时出现时提取任务 A 的平均时间

计算任务 A 运行时的标准差

确定其它一些通过事件流识别的任务对其总结更有意义。

这一灵活性对于诊断性能或功能问题没有价值。

除了提供关于系统活动的详细信息之外,跟踪程序允许检测应用程序并将它们的跟踪事件收集到系统事件中。跟踪文件随即包含了一条具有正确的序列和精确的时间戳的应用程序和系统活动的完整记录。

2. 实现

一个跟踪 hook 是一个将被监视的特定事件。一个唯一的数字被指定给那个事件,这个唯一的数字被称作一个 hook ID。trace 命令监视这些 hook。

trace 命令生成关于用户进程和内核子系统的统计信息。这些二进制信息被写入内存中的两个备用缓冲中。trace 进程然后将信息传送到磁盘上的日志文件中。这个文件快速增长。trace 程序以进程方式运行,它可以通过 ps 命令监视。 trace 命令以守护程序形式运行,类似于记帐程序。

以下内容说明了跟踪程序的实现过程。

跟踪程序的实现。这些叙述说明了跟踪过程。在这一过程中,用户进程(内核子系统)向具有标记A和B的跟踪缓冲发送 hook 调用。它们从缓冲向用户内核跟踪日志文件传送跟踪驱动。

使用系统资源监视程序。理想情况下,开销应当足够小以不明显影

响系统运行。当 trace 程序
活动时,CPU 开销要小于百分之二。当跟踪数据充满缓冲区需要写到日志中时,需要为文件 I/O 附加 CPU 开销。通常这一开销小于百分之五。因为 trace 程序需要占用缓冲空间,因此如果环境中内存有限时,这就变得比较重要。要注意跟踪日志和报告文件可能变得很大。

限制跟踪数据收集量

跟踪程序生成大量数据。这些数据在存储设备上溢以后不可能捕捉到。有两种有效使用跟踪程序的方法:

跟踪程序可以通过多种方式来打开和关闭以捕捉系统活动。实用的方式就是为后续处理捕捉系统活动几秒到几分。这段时间足够用来获得主要应用程序处理过程或一项长时间任务感兴趣部分的特征。

跟踪程序可以配置成将时间流定向为标准输出。这允许一个实时进程连接到事件流并当事件被记录时提供数据整理,然后创建长期监视能力。一个专门监测的逻辑扩展就是将数据流定向到可以存储大量数据或提供动态数据整理的辅助设备。这种技术被性能工具tprof,pprof,netpmon,以及 filemon使用。

启动和控制跟踪

跟踪程序提供三种不同使用方式:

子命令方式
通过 shell 命令启动跟踪(trace)并通过子命令给用户显示对话框。所跟踪的工作负载必须由其它进程提供,因为最初的 shell 进程正在使用当中。

命令方式
用 shell 命令启动跟踪(trace -a)这包含一个确定跟踪程序将要异步运行的标志。最初的 shell 进程可以自由运行和跟踪控制命令交替执行的普通命令。

应用程序控制方式
用 trcstart() 子例程启动跟踪并通过从应用程序进行子例程调用如 trcon() 和 trcoff() 来控制跟踪。

格式化跟踪数据

trcrpt 命令提供了一个生成常规目的的跟踪报告的手段。此报告程序并没有提供数据整理功能,而是将原始二进制事件流转换成可读的 ASCII 码列表。数据可以被阅读器直观地提取,或可以开发进一步减少数据的工具。

报告程序按照跟踪格式文件中提供的规则为每一个事件显示文本和数据。缺省跟踪格式文件是 /etc/trcfmt,它为每一个事件ID包含了一节。事件的节将此事件的格式化规则提供给报告程序。这一技术允许用户向程序中添加他们自己的事件并在格式文件中插入相应的事件节以确定新事件应当如何格式化。

3. 观察跟踪数据

当跟踪数据格式化时,一个给定事件的所有数据通常放在一行。附加行可以包含说明信息。依靠所包含的字段,格式化的行可以轻易超过80个字符。最好查看一下关于支持 132 列输出设备的报告


4. 跟踪程序使用示例

下面给您介绍一个

典型的跟踪示例。

如果输入文件没有缓存在系统内存中,这个例
子更有意义。选择任意一个大小超过 50KB 并且最近没有用过的文件作为源文件。

获得一个样本跟踪文件

跟踪数据文件增长很快。尽可能将数据收集限定在感兴趣区域。这样做的一个技巧就是将许多命令在一行中发出。例如:

# trace -a -k "20e,20f" -o trc_raw ;cp ../bin/track /tmp/junk;trcstop捕捉 cp 命令的执行。我们已经使用了trace命令的两个特征。-k "20e,20f"选项抑制了从 lockl() 和 unlockl() 函数的事件收集。这些调用在单处理器系统中大量存在,但是在 SMP 系统中并不存在,并且不需要给我们附加信息就可以向报告中添加卷。 -o trc_raw 选项使原始跟踪输出文件写到我们的本地目录中。

格式化样本跟踪

我们为我们的报告使用 trcrpt 命令的如下格式:

# trcrpt -O "exec=on,pid=on" trc_raw > cp.rpt 这个报告完全限制了要运行的文件名和指定给它的进程 ID。

这个报告文件告诉我们在跟踪中存在大量 VMM 页分配和删除事件,就象下面的序列:

1B1 ksh85260.0031098880.162816

VMM page delete:V.S=0000.150E ppage=1F7F

working_storage delete_in_progress process_private computational

1B0 ksh85260.0031413760.031488

VMM page assign:V.S=0000.2F33 ppage=1F7F

working_storage delete_in_progress process_private computationa我们对这个时刻 VMM 活动详细信息这个级别的信息并不感兴趣,因此我们如下重新格式化了跟踪:

# trcrpt -k "1b0,1b1" -O "exec=on,pid=on" trc_raw > cp.rpt2-k "1b0,1b1" 选项抑制了在格式化输出中不必要的 VMM 事件。它使我们免于为了抑制不必要的事件而被迫重新跟踪工作负载。如果我们相信我们可能需要在某点看一下锁定活动,那么我们可能已经使用 trcrpt 命令的 -k 功能而不是使用trace命令去抑制 lockl() 和 unlockl() 事件。如果我们只对一小部分事件集感兴趣,我们可能已经将 -d" hookid1,hookid2" 用来产生只对那些事件生成的报告了。因为 hook ID 在报告的最左边一列,您可以快速编译一个包含或不包含的 hook 列表。一个全面的跟踪 hook ID 定义于 /usr/include/sys/trchkid.h 文件中。

5. 阅读一个跟踪报告

跟踪报告的报头告诉您这个跟踪何时何地产生,以及产生它的命令:

Thu Oct 28 13:34:05 1999

System: AIX texmex Node: 4

Machine: 000691854C00

Internet Protocol Address: 09359BBB 9.53.155.187

Buffering: Kernel Heap

trace -a -k 20e,20f -o trc_raw如果以足够小的字体来显示,报告正文看起来如下:

IDPROCESS NAMEPIDELAPSED_SECDELTA_MSECAPPLSYSCALL KERNELINTERRUPT

101 ksh85260.0058334

720.107008kfork

LR = D0040AF8

101 ksh72140.0128202240.031744

execve LR = 10015390

134 cp72140.0144514560.030464exec:cmd=cp ../bin/track /tmp/junk pid=7214 tid=24713

在 cp.rpt2 中您可以看到
如下信息:

fork(),exec(),以及 cp 进程的缺页故障活动。

输入文件读操作的打开和 /tmp/junk 文件的创建

系统连续调用 read()/write() 完成拷贝工作。

当进程 cp 等待 I/O 完成时它被阻塞,并且等待进程被发送。

逻辑卷请求如何翻译成物理卷请求。

文件被映射而不是被缓存在传统的内核缓冲区中,读访问导致缺页故障,这一故障必须由虚拟内存管理器解决。

虚拟内存管理器检测序列访问并开始预取文件页。

预取的大小随着序列访问的持续而增大。

可能的时候,磁盘设备驱动程序合并多个文件请求为一个向驱动器发出的 I/O 请求

跟踪输出一开始看起来有一点不可抗拒。这是一个帮助学习的好的示例。如果您能够清楚上述活动,您将能够熟练使用跟踪程序诊断系统性能问题。

跟踪报告过滤

跟踪数据的完整详细信息可能并不需要。您可能选择显示特定的感兴趣的事件。例如,一个特定事件发生次数有时很有用。为了回答“在拷贝的示例中有多少 open 被打开?”这个问题。首先寻找系统调用的 open() 事件 ID。可以按照如下来做:

# trcrpt -j | grep -i open您应该能够看到事件 ID 15b 为 OPEN 系统调用事件。现在,按照下述拷贝示例去处理数据:

# trcrpt -d 15b -O "exec=on" trc_raw报告被写到标准输出,您可以确定发生的 open() 例程数。如果您只想看由 cp 进程执行的 open() 例程,按照如下命令再次运行报告命令:

# trcrpt -d 15b -p cp -O "exec=on" trc_raw

[页的底部 | 上一页 | 下一页 | 目录 | 索引 | 资料库 | 法律 | 搜索]

性能管理指南

从命令行启动和控制跟踪程序

对跟踪程序进行配置和数据收集有选择性地启动可以通过使用trace命令来完成,其详细语法描述见《AIX 5L V5.2 命令参考大全》。

当使用trace命令对跟踪配置完成以后,可以通过控制去开关数据收集以及停止跟踪程序(trcstop 子命令停止trace并释放缓存)。您可以通过如下方式调用控制:子命令、命令、子例程。子例程界面在『从程序启动和控制跟踪』中描述。

以子命令方式控制跟踪

如果 trace 例程没有用 -a 选项配置,它将运行于子命令方式。与通常 shell 提示符不同,系统显示“->”提示符。在这种方式中,以下子命令可以识别:

trcon

启动或重启动事件数据收集

trcoff

暂挂事件数据收集

q 或 quit

停止事件数据收集并

结束 trace 例程

命令

运行特定 shell 命令

显示可用命令

例如:

# trace -f -m“在 mycmd 命令执行过程中进行事件跟踪”

-> !mycmd

-> q

#使用命令控制跟踪

如果 trace 例程被配置成异步运行(trace -a),跟踪
可以通过如下命令控制:

trcon

启动或重启动事件数据收集

trcoff

暂挂事件数据收集

trcstop

停止事件数据收集并结束 trace 例程

例如:

# trace -a -n -L 2000000 -T 1000000 -d -o trace.out

# trcon

# cp /a20kfile /b

# trcstop通过使用 -d(延迟跟踪直到 trcon 子命令输入)选项,您可以限制在多大程度上跟踪trace命令本身。如果 -d 选项没有指定,则跟踪立刻开始并可以记录trace命令初始化自身内存缓冲的事件。典型地,我们希望跟踪除trace命令本身以外的所有事件。

缺省状态下,内核缓冲区大小(-T 选项)可能至多是日志缓冲区大小(-L 选项)的一半。如果您使用 -f 标志,缓冲区大小可以相同。

如果内核扩展系统调用需要被跟踪时,-n 选项很有用。

从程序启动和控制跟踪

通过一个子例程调用,跟踪程序可以从一个程序启动。子例程为 trcstart() 并存在于 librts.a 库中。trcstart() 子例程的语法如下:

int trcstart(char *args)这里 args 为您为trace命令输入的选项列表。缺省状态下,系统跟踪(通道 0)被启动。如果您想启动一个一般的跟踪,将 -g 选项包含在 args 字符串中。如果成功结束,trcstart() 子例程返回通道标识。对于一般跟踪,这个通道标识可以用来记录原始一般通道。

当用这个子例程编译一个程序时,必须特别要求要将其链接到 librts.a 库(使用 -l rts 作为编译选项)。

用 trace 子例程调用控制跟踪

只有当子例程从 librts.a 库中调用时对于trace例程的控制才可用。当子例程成功结束时返回零。子例程为:

int trcon()

启动或重启动跟踪数据收集。

int trcoff()

暂挂跟踪数据收集。

int trcstop()

停止跟踪数据收集并结束trace例程。

使用 trcrpt 命令格式化报告

跟踪报告程序读取跟踪日志文件,格式化跟踪入口,并写出报告。trcrpt 命令根据在跟踪格式文件(/etc/trcfmt)中提供的规则为每一个事件显示文本和数据。格式文件中的节为事件或 hook 提供格式化规则。用户要添加 hook 到程序中可以在格式文件中插入相应的事件节来打印他们的跟踪数据(见『添加新的跟踪事件』)。

trcrpt 程序不会产生任何摘要报告,但是您可以使用 awk 命令通过进一步处理 trcrpt 的输出来创建简单摘要。

trcrpt 命令的详细语法在《AIX 5L V5.2 命令参考大全》中作

了叙述。

在同一系统中格式化报告

trcrpt 命令格式化包含在跟踪日志文件中的跟踪事件数据报告。使用这条命令您可以确定在报告中将要包含(或省略)的事件,以及决定输出的显示。

您可以通过输入 SMIT 快捷路径使用系统管理界面程序(SMIT)来运行 trcrpt 命
令:

# smitty trcrpt创建一个跟踪报告到 newfile 文件,输入:

# trcrpt -o newfile在一个不同的系统上格式化报告

我们经常希望在另外一个系统上运行 trcrpt 命令而不是在跟踪收集的系统上。可能有各种原因这样做,例如:

被跟踪的系统可能不适合您运行 trcrpt 命令,或跟踪可能被系统管理员或远程站点上的某人收集。

被跟踪的系统对您来讲太忙以至于不能运行 trcrpt 命令。

被跟踪的系统没有剩余足够的文件系统空间来容纳一个非常大的 trcrpt 文件。

您可以在一个系统上运行trace命令而在另一个系统上对那个跟踪文件运行 trcrpt 命令。为了工作正常,跟踪运行的系统需要 trcnm 命令的输出。运行 trcnm 命令重定向输出到一个文件的操作如下:

# trcnm > trace.nm如果您想为其它性能工具如 tprof、pprof、netpmon 以及 filemon 使用跟踪文件,运行 gennames Gennames_File 命令。

那个文件然后通过使用 trcrpt 命令的 -n 标志被使用,如下:

# trcrpt -n trace.nm -o newfile如果 -n 没有被要求,则 trcrpt 命令从 trcrpt 命令运行的系统生成一个符号表。

另外,正在被跟踪系统的 /etc/trcfmt 文件的一个拷贝可能有用,因为那个系统可能比 trcrpt 命令正在运行的系统有不同的或更多的跟踪格式节。 trcrpt 命令可以使用 -t 标志来确定跟踪格式文件(缺省时它从 trcrpt 命令运行的系统使用 /etc/trcfmt 文件)。例如:

# trcrpt -n trace.nm -t trcfmt_file -o newfile从 trace -C Output 格式化一个报告

如果使用 -C 标志运行跟踪,会生成一个或多个跟踪输出文件。例如,如果跟踪文件名定为 trace.out 并且 -C all 被确定在一个 4 通道 SMP 上,则 trace.out、trace.out-1、trace.out-2、trace.out-3以及 trace.out-4 文件被生成。当您运行 trcrpt 命令时,确定 trcrpt -C all 和 trace.out 作为文件名,则所有文件将被读,如下所示:

# trcrpt -C all -r trace.out > trace.tr这个 trace.tr 文件然后可被用作其它命令的输入(它将包含从每一个 CPU 得到的跟踪数据)。-C 标志放在跟踪中的原因是因为跟踪能够在那些有多个 CPU(例如超过 12 个)的系统上跟上每一个 CPU 的活动。另一个原因是当您 使用 -C all 标志时每一个跟踪缓冲区大小是一个 CPU 的缓冲区大小。

6. 添加新的跟踪事件

操作系统通过关键事件进行检测

。用户只需要激活跟踪来捕捉操作系统的事件流。应用程序开发者在开发过程中为了调试的目的可能想测试他们的应用程序代码。这一事件流提供给他们深入了解他们的应用程序如何同系统交互的机会。

为了添加一个跟踪事件,您必须设计由您的程序生成的与跟踪接口规定一致的跟踪记录。您然后在合适位置
向程序添加跟踪 hook 宏。跟踪然后能够通过任何标准调用和控制跟踪(命令、子命令或子例程调用)方式被接收。为了使用 trcrpt,程序格式化您的跟踪,需要向跟踪格式文件添加描述每一个新跟踪记录和它的格式化要求的节。

一个跟踪事件记录的可能格式

一个跟踪事件可以采用多种格式。一个事件由一个 hook 字、可选数据字和一个可选时间戳构成,如下图所示。对于每一种事件记录可以采用的格式定义一个四位输入。输入字段由记录例程强制输入以便于当处理数据时,即使跟踪格式文件中的格式规则对于此事件不正确或丢失,报告程序总是可以在事件间略过这一字段。

跟踪事件记录格式. 此说明为一个包含 7 行的表。第一行中的单元标记为 12 位 hook 标识、4 位类型和 16 位数据字段。下面 6 行简单标记数据字 1 到数据字 5,最后一行标记为 32 位时间戳。第 1 行的一行标题是 Hook 字(要求)。下 5 行标记为 D1(可选)、D2(可选)、D3(可选)、D4(可选)、(可选)。最后一行标记为 T(可选)。

事件记录应当尽可能短。许多系统事件只使用 hook 字和时间戳。数据字应当少使用,因为使用它们会降低效率并产生干扰。长格式允许用户记录一个数据的变量长度。在这个长表单中, hook 字的 16 位数据字段被转换为一个描述事件记录长度的长度字段。

跟踪通道

跟踪程序可以最多容纳八个跟踪 hook 活动的同时通道,它们从 0-7 编号。通道 0 总是用于系统事件,而应用程序事件也可以使用它。另外七个通道叫做一般通道,可以用于跟踪应用程序活动。

当跟踪启动时,缺省使用通道 0。trace -n 通道号命令启动跟踪到一个一般通道。一般通道的使用有一些限制:

一般通道的接口比通道 0 的接口花费较多的 CPU 时间,这是因为需要在两种通道之间分辨以及一般通道记录变长度记录。

通道 0 上记录的事件和一般通道上记录的事件可能只在时间戳上相关,而不是序列上相关,因此可能存在不能区别哪一个事件先发生的情况。

记录跟踪事件的宏

记录每一种可能事件记录类型的宏定义在 /usr/include/sys/trcmacros.h 文件中。事件标识定义于 /usr/include/sys/trchkid.h 文件中。在任何记录

跟踪事件的程序中包含这两个文件。

在通道 0 上具有时间戳的记录事件的宏如下:

TRCHKL0T(hw)

TRCHKL1T(hw,D1)

TRCHKL1T(hw,D1)

TRCHKL2T(hw,D1,D2)

TRCHKL3T(hw,D1,D2,D3)

TRCHKL4T(hw,D1,D2,D3,D4)

TRCHKL5T(hw,D1,D2,D3,D4,D5)相似地,为了在通道 0 上不加时间戳记录事件,使用:

TRCHKL0(hw)

TRCHKL1(hw,D1)

TRCHKL1
(hw,D1)

TRCHKL2(hw,D1,D2)

TRCHKL3(hw,D1,D2,D3)

TRCHKL4(hw,D1,D2,D3,D4)

TRCHKL5(hw,D1,D2,D3,D4,D5)跟踪事件记录类型字段的值被设置为相应宏所用值,无论在 hw 参数中那 4 位为何值。

只有两个宏记录事件到一般通道(1-7)中的一个。这两个宏如下:

TRCGEN(ch,hw,D1,len,buf)

TRCGENT(ch,hw,D1,len,buf)在由通道参数(ch)确定的事件流中,这些宏从用户的数据段中以由 buf 确定的位置开始记录了一个 hook 字(hw),一个数据字(D1)和 len 字节。

事件标识的使用

在一个跟踪记录中事件标识表明该记录属于一个特定记录类。事件标识是跟踪机制记录或忽视跟踪 hook 的基础,同时也是 trcrpt 命令在格式化报告中包含或不包含跟踪记录的基础。

对于一个可能的 4096 个标识,事件标识是 12 位(三位十六进制数)。为了避免重复,那些被保留和与代码在一起的事件标识被永久分配。为了允许用户在他们的环境中或开发过程中定义事件,从十六进制 010 到从十六进制 0FF 范围的事件标识为了临时使用而被保留。用户在他们自己的环境中可以自由使用这一范围内的 ID(即在任何用户准备使用的系统设置中确保同一个标识没有被多次使用)。

注:

重要的是使用这个事件范围的用户不要让代码离开他们的环境。如果您忽略对代码用临时 hook 标识对一个您没有控制标识使用的环境进行测试,您可能有同其它已经在那个环境中使用同一标识的程序冲突的危险。

事件标识应当被保留,因为它们很少,但它们可以通过使用 16 位数据字段而扩展。这样对每一个正式的 hook 标识就可能产生 65536 个不同事件。拥有独一无二标识的唯一的原因就是一个标识处在收集和报告过滤在跟踪程序中可用的级别。

如果在特定跟踪格式文件中存在该事件的节,一个用户添加的事件可能被 trcrpt 命令格式化。跟踪格式化文件是一个可编辑的 ASCII 文件(见『跟踪格式化文件中节的语法』)。

编程和格式化事件示例

以下的示例表明了一个程序循环执行过程中跟踪事件的使用:

#include <sys/trcctl.h>

#include <sys/trcmacros.h>

#incl

ude <sys/trchkid.h>

char *ctl_file = "/dev/systrctl";

char *ctl_file = "/dev/systrctl";

int ctlfd;

int i;

main()

{

printf("configuring trace collection \n");

if(trcstart("-ad")){

if(trcstart("-ad")){

perror("trcstart");

exit(1);

}

printf("opening the trace device\n");

if((ctlfd = open(ctl_file,0))<0){

perror(ctl_file);

exit(1);

}

printf("turningtrace on \n");

if(ioctl(ct
lfd,TRCON,0)){

perror("TRCON");

perror("TRCON");

exit(1);

}

for(i=1;i<11;i++){

TRCHKL1T(HKWD_USER1,i);

/* The code being measured goes here. The interval */

/* between occurrences of HKWD_USER1 in the trace*/

/* file is the total time for one iteration.*/

}

printf("turning trace off\n");

if(ioctl(ctlfd,TRCSTOP,0)){

perror("TRCOFF");

perror("TRCOFF");

exit(1);

}

printf("stopping the trace daemon \n");

if(trcstop(0)){

perror("trcstop");

exit(1);

}

exit(0);

}当您编译这个样本程序时,必须按如下方式连接 librts.a 库:

# xlc -O3 sample.c -o sample -l rtsHKWD_USER1 是事件标识 010 十六进制(您可以通过检查 /usr/include/sys/trchkid.h 文件来校验它)。除非跟踪格式文件中提供规则,否则报告程序并不格式化 HKWD_USER1 事件。以下一个 HKWD_USER1 节的示例可用:

# 用户事件 HKWD_USER1 格式化规则节

# 一个将格式化样本程序的事件使用的示例

010 1.0 L=APPL "USER EVENT - HKWD_USER1" O2.0\n \

"The # of loop iterations =" U4\n \

"The elapsed time of the last loop = " \

endtimer(0x010,0x010)starttimer(0x010,0x010)当您输入示例节,不要修改主要格式文件 /etc/trcfmt,而是做一个拷贝并将它放在您自己的目录中(假设您给它起名为 mytrcfmt)。当您运行此示例程序时,由于没有给 trcstart() 子例程指定其它日志文件,原始事件数据在缺省日志文件中被捕捉到。您可以过滤输出报告来只得到您的事件。为了这样做,运行 trcrpt 命令如下:

# trcrpt -d 010 -t mytrcfmt -O "exec=on" > sample.rpt您可以浏览 sample.rpt 文件看结果。

跟踪格式化文件中节的语法

跟踪格式化文件为每一个事件标识提供了输出数据和显示期望数据的规则。这允许新的事件在不改变报告程序的条件下被格式化。新事件的规则被简单加到格式化文件中。此规则语法在数据显示方面提供了灵活性。

一个跟踪格式节可以按描述任何特别事件规则的要求来决定长度。节可以通过在末尾加 '\' 字符结束当前行来延续到下一行。字段描述于 AIX 5L Version 5.2 Files Reference 中。

在 /etc/trcfmt 文件中的注释描述了其它格式和宏的可能性并描述了一个用户如何能够定义附加宏


相关文档
相关文档 最新文档