最好来自Ubuntu存储库。
答案 0 :(得分:3)
其他人提到OProfile;对于现代Linux安装的全系统统计分析,它确实很摇滚。
更值得尊敬的工具(不需要内核支持,因此可以在旧版本的Linux甚至非Linux操作系统下运行)GNU gprof,包含在binutils中(因此无疑)已安装在您的开发环境中。)
要使用gprof
,只需使用-pg
参数编译您的应用程序gcc
;程序退出后将创建一个名为gmon.out
的文件,然后gprof
可用于分析此文件。
答案 1 :(得分:2)
一种简单但有效的技术是在GDB下运行程序并处理SIGINT信号。程序运行时,通过键入control-c或其他任意方式手动生成SIGINT,并在暂停时记录调用堆栈。这样做很多次,比如10或20,而程序主观上很慢。这将使您非常了解时间的去向。
这种方法不能为您提供精确的计时,但它确实能够找到花费最多时间的指令,包括通话指令。
答案 2 :(得分:1)
Sysprof是一个很好的分析器,类似于OProfile(也有一个gtk GUI)。这可以在Ubuntu存储库中找到。它是一个内核级别的分析器,需要一个与gprof不同的内核模块,但是,与gprof不同,它可以分析多线程应用程序。
答案 3 :(得分:0)
有OProfile。它并不难以使用,但有点儿错误。
答案 4 :(得分:0)
我在oprofile(http://oprofile.sourceforge.net/news/)上取得了很大的成功,它也可以在Ubuntu存储库中使用。它不需要重新编译,并且对共享对象等没有任何限制。