linux程序测试工具gprof,Linux系统-耗时检测-gprof操作入门

Linux系统-耗时检测-gprof操作入门。

一定时间的输入的程序处理延时,现需测量程序中各个函数的耗时比例,找到性能瓶颈,使用gprof工具检测。

1. gprof的功能

gprof和oprofile对比

gprof:

GNU工具之一,默认linux系统中都带有这个工具

原理:编译时在每个函数的出入口加入profiling代码,运行时统计程序在用户态的执行信息,得到每个函数的调用次数,执行时间,调用关系等信息。

适用领域:

gprof简单易懂,适合于查找用户级程序的瓶颈 对很多时间在内核态执行的程序,gprof不适合

oprofile:

开源的profiling工具,2.6内核以上支持SMP系统带有

原理:使用硬件调试寄存器来统计信息,进行profiling的开销比较小,而且可以对内核进行profiling。统计的信息包括:cache的缺失率,memory的访存信息,分支预测错误率等,这些信息gprof是得不到的,但是oprofile不能得到函数调用次数。

适用领域:oprofile稍显复杂,但是得到的信息更多,更适合调试系统软件

2. gprof的使用

此处只介绍gprof的使用,oprofile的使用可参考官方站点:http://oprofile.sourceforge.net/about/

gprof的使用流程:

编译链接时加上-pg选项。一般我们可以加在 makefile中,如果需要得到带注释的源码清单,需要加-g选项

运行可执行程序(程序正常退出会在运行目录下生成gmon.out文件)

gprof工具分析gmon.out文件

gprof分析命令:

gprof -b:不再显示每个字段的详细描述

-p:只显示函数的调用图 call graph

-q:只显示函数的时间消耗列表

-e Name:不再显示函数Name及其子函数的调用图

可以添加多个-e标志,一个-e标志只能指定一个函数

-E Name:不再显示函数Name及其子函数的调用图

此标志类似于-e标志,但它在总时间和百分比时间的计算中排除了由函数Name及其子函数的耗时

-f Name:显示函数Name及其子函数的调用图

可以指定多个-f标志,一个-f标志只能指定一个函数

-F Name:显示函数Name及其子函数的调用图

类似于-f标志,一个-F标志只能指定一个函数,可以指定多个-F标志 但在总时间和百分比时间计算中仅使用所打印的例程的时间 -F标志覆盖-E标志

-z:显示使用次数为零的例程

按照调用计数和累积时间计算

3. gprof的检测示例

添加-pg和-g选项

gcc -g -pg -o test test.c

gcc -o test test.c -pg -g

运行可执行程序再分析gmon.out文件

./test

gprof test gmon.out -b

需要把它和产生它的应用程序关联起来 使用不同命令查看不同选项

或统一执行分析

gprof -b ./test gmon.out

使用不同命令查看不同选项

执行后的一个例子:gprof test gmon.out -b

41666_0.png

函数执行耗时

41666_1.png

函数调用图

41666_2.png

函数名索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值