prof 命令
用途
显示对象文件概要文件数据。
语法
概况 [ -t | -c | -a | -n ] [ -o | -x ] [ -g ] [ -z ] [ -h ] [ -s ] [ -S ] [ -v ] [ -L PathName ] [ 计划 ] [ -m MonitorData ... ]
描述
概况命令解释 "监控器子程序为对象文件 计划(默认为a.out)收集的剖面数据。 它读取在对象文件 Program 中的符号表并将它与概要文件(缺省情况下为 mon.out)相联系。 prof 命令为每个外部文本符号显示花费在该符号地址和下一个符号的地址之间的执行时间的百分比、函数被调用的次数和每个调用的平均毫秒数。
要记录一个函数被调用的次数,必须使用带有 -p 标志的 cc 命令编译文件。 -p 标志使得编译器插入一个 mcount 子例程的调用到为您的程序的每一个重新编译的函数产生的对象代码中。 当程序运行时,每次一个父函数调用一个子函数,子函数调用 mcount 子例程来增加那个父子对的独特的计数器。 不带 -p 标志重新编译的程序并不插入 mcount 子例程,因而并不对调用它们的函数进行记录。
-p 标志也会使对象文件包含程序开始和结束时调用 monitor 子例程的特殊概要文件启动函数。 当程序结束时对 monitor 子例程的调用实际上是写 mon.out 文件。 因此,只有程序从主程序显式退出或返回时才产生 mon.out 文件。
PROF=filename:<filename>例如,如果设置了 PROF=myprof,那么生成的文件将命名为 myprof.out。对象装入的位置和名称储存在 mon.out 文件中。 如果不选择任何标志,prof 将使用这些名称。 必须指定一个程序或使用 -L 选项来访问其他对象。
标志
互斥标志 a、c、n 和 t 决定 prof 命令如何排序输出行:
| 项 | 描述 |
|---|---|
| -a | 按递增的符号地址排序。 |
| -c | 按递减的调用数量排序。 |
| -n | 通过符号名按词汇排序。 |
| -t | 按递减的总时间的百分比排序(缺省)。 |
请注意:如果在同一命令中使用了'a、'c、'n和't中的多个标志,'概况命令仍可成功运行。 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 - The following example obtains a local version of any shared libraries used to create the 运行文件 file in the /home/score/lib directory. 使用的数据文件将是 runfile.mon 而不是 mon.out。
prof -x -L/home/score/lib runfile -m runfile.mon
文件
| 项 | 描述 |
|---|---|
| mon.out | 缺省概要文件。 |
| a.out | 缺省对象文件。 |
| mon.sum | 摘要概要文件。 |