AIX命令参考大全,卷 4,n - r
prof 命令
用途
显示对象文件概要文件数据。
语法
prof [ -t | -c | -a | -n ] [ -o | -x ] [ -g ] [ -z ] [ -h ] [ -s ] [ -S ] [ -v ] [ -L PathName ] [ Program ] [ -m MonitorData ... ]
描述
prof 命令为对象文件 Program(缺省情况下为 a.out)解释通过 monitor 子例程收集的概要文件数据。 它读取在对象文件 Program 中的符号表并将它与概要文件(缺省情况下为mon.out)相联系。prof 命令为每个外部文本符号显示花费在该符号地址和下一个符号的地址之间的执行时间的百分比、函数被调用的次数和每个调用的平均毫秒数。
注:来自于 C++ 对象文件的符号在它们被使用前修复(demangle)它们的名字。
要记录一个函数被调用的次数,必须使用带有 -p 标志的 cc 命令编译文件。 -p 标志使得编译器插入一个 mcount 子例程的调用到为你的程序的每一个重新编译的函数产生的对象代码中。 当程序运行时,每次一个父函数调用一个子函数,子函数调用 mcount 子例程来增加那个父子对的独特的计数器。 不带 -p 标志重新编译的程序并不插入 mcount 子例程,因而并不对调用它们的函数进行记录。
-p 标志也会使对象文件包含程序开始和结束时调用 monitor 子例程的特殊概要文件启动函数。 当程序结束时对 monitor 子例程的调用实际上是写 mon.out 文件。因此,只有程序从主程序显式退出或返回时才产生 mon.out 文件。
对象装入的位置和名称储存在 mon.out 文件中。如果不选择任何标志,prof 将使用这些名称。必须指定一个程序或使用 -L 选项来访问其它对象。
注:导入的外部例程调用,例如对共享库例程的调用,都有一个对本地 glink 代码的中间调用来建立对实际例程的调用。 如果在运行这个代码时计时器时钟到时,那么时间被记入一个称为 routine .gl 的子例程,这里 routine 是被调用的子例程。 例如,如果在 glink 代码中调用 printf 子例程时计时器到时,那么时间被计入 printf.gl 子例程。
标志
互斥标志 a、c、n 和 t 决定 prof 命令如何排序输出行:
-a | 按递增的符号地址排序。 |
-c | 按递减的调用数量排序。 |
-n | 通过符号名按词汇排序。 |
-t | 按递减的总时间的百分比排序(缺省)。 |
注:如果在同一命令中使用 a、 c、 n 和 t 标志中的多个, prof 命令仍然能够成功运行。 prof 命令接受它在命令行上遇到的这些标志的第一个且忽略其它的。
互斥标志 o 和 x 指定如何显示每个受监视符号的地址。
-o | 与符号名一起以八进制显示每个地址。 |
-x | 与符号名一起以十六进制显示每个地址。 |
注:如果在同一命令中 -o 和 -x 标志同时使用, prof 命令仍然能够成功运行。 prof 命令接受它在命令行上遇到的这两个标志的第一个且忽略另一个。
以任何组合使用以下标志:
-g | 包含非全局符号(静态函数)。 |
-h | 抑制报表上的标题的正常显示。这在报表要进一步处理时有用。 |
-L PathName | 使用备用路径名定位共享的目标。 |
-m MonitorData | 从 MonitorData 而不是 mon.out 中取得概要文件数据。 |
-s | 在 mon.sum 中产生一个摘要文件。这在指定多个概要文件时有用。 |
-S | 显示监视参数的摘要与在标准错误上的统计。 |
-v | 抑制所有打印并通过绘图过滤器发送概要文件的图形版本到标准输出进行显示。 在绘图时可以给定下限与上限数字(缺省情况下是 0 和 100)使用相应更高一点的分辨率绘制一定百分比的选定概要文件。 |
-z | 包含在概要文件范围内的所有符号,甚至在调用与时间都为 0(零)的情况下也这样。 |
示例
- 要按时间顺序不带报头的显示花费在每一个符号地址上的时间量,请输入:
prof -t -h
- 下例示例获取用于在 /home/score/lib 目录中创建 runfile 文件的任意共享库的一个本地版本。 使用的数据文件将是 runfile.mon 而不是 mon.out 。
prof -x -L/home/score/lib runfile -m runfile.mon
文件
mon.out | 缺省概要文件。 |
a.out | 缺省对象文件。 |
mon.sum | 摘要概要文件。 |
相关信息
cc 命令、nm 命令和 gprof 命令。
exit 子例程、profil 子例程和 monitor 子例程。
《AIX 5L V5.2 系统用户指南:操作系统与设备》中的命令概述。
AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Subroutines Overview。