3

最好来自 Ubuntu 存储库。

4

5 回答 5

3

其他人提到了OProfile;对于现代 Linux 安装的全系统统计分析,它确实很摇滚。

更古老的工具(不需要内核支持,因此可以在旧版本的 Linux 甚至非 Linux 操作系统下工作)是GNU gprof,包含在binutils中(因此毫无疑问已经安装在您的开发环境中)。

要使用gprof,只需使用-pg参数编译您的应用程序gccgmon.out程序退出后将创建一个名为的文件,gprof然后可用于分析该文件。

于 2009-02-03T01:57:53.150 回答
2

一个简单但有效的技术是在 GDB 下运行程序并处理 SIGINT 信号。在程序运行时,通过键入 control-c 或其他方式手动生成 SIGINT,并在程序停止时记录调用堆栈。多次执行此操作,例如 10 或 20 次,同时程序主观上很慢。这将使您很好地了解时间的去向。

这种方法不会给你精确的计时,但它确实可以精确地定位到花费最多时间的指令,包括调用指令。

如何分析在 Linux 中运行的 C++ 代码?

于 2009-02-16T20:02:04.770 回答
1

Sysprof是一个很好的分析器,类似于 OProfile(也有一个 gtk GUI)。它在 Ubuntu 存储库中可用。它是一个内核级别的分析器,需要一个与 gprof 不同的内核模块,但也与 gprof 不同,它可以分析多线程应用程序。

于 2009-02-03T06:11:51.983 回答
0

OProfile。使用起来并不难,但有点麻烦。

于 2009-02-03T00:59:52.597 回答
0

我在 Ubuntu 存储库中也可以使用 oprofile ( http://oprofile.sourceforge.net/news/ ) 取得了很好的成功。它不需要重新编译,并且对共享对象等没有任何限制。

于 2009-02-03T01:00:06.370 回答