最好来自 Ubuntu 存储库。

有帮助吗?

解决方案

其他人也提到过 O型材;对于现代 Linux 安装上的全系统统计分析,它确实很强大。

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

使用 gprof, ,只需使用以下命令编译您的应用程序 -pg 论证 gcc;一个名为 gmon.out 将在程序退出后创建,并且 gprof 然后可以用来分析该文件。

其他提示

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

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

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

Sysprof 是一个优秀的分析器,类似于OProfile的(也有GTK GUI)。这是在Ubuntu的仓库中。这是一个内核级探查,要求不像gprof的内核模块,但是,也不像gprof的,它可以分析多线程应用程序。

有是 OProfile的。这并不是说很难使用,但在某种程度上有些马车。

我已经通过oprofile良好的成功( http://oprofile.sourceforge.net/news/ ),这是在Ubuntu仓库可用。它不需要重新编译,并且不具有关于共享对象或任何限制等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top