80

我需要分析一些在 Linux 上运行 C++ 的代码。各位大神能推荐几个profiler吗?

4

9 回答 9

37

使用 gprof。

只需使用-pg标志编译(我认为(但不确定)您必须进行优化。)并使用 gprof 分析您的可执行文件将生成的 gmon.out 文件。

例如:

gcc -pg -o whatever whatever.c

./whatever

gprof whatever gmon.out

与 g++ 和 cpp 相同。

于 2009-07-23T00:59:40.803 回答
24

valgrind是一个知名的 linux 分析器

于 2009-07-22T23:06:33.200 回答
13

从 RotateRight ( http://www.rotateright.com ) 缩放是我一直在使用的。它具有功能的蝴蝶视图,您可以双击任何功能以深入了解源代码或 asm 代码。使用调试信息 (-g) 构建以查看您的源代码,但您仍应构建和配置优化代码。

于 2010-02-10T15:49:32.960 回答
12

我是Oprofile的粉丝。它涉及安装内核模块并且有一点学习曲线,但它相当强大,并且对于优化的程序/程序非常有效,无需调试符号。

Vtune是英特尔制造的另一个非常强大的分析器。我相信 Linux 版本对于非商业软件是免费的。

还有 dfa 提出的Valgrind工具套件。Callgrind 可能是您最感兴趣的。Cachegrind(其功能集是 Callgrind 的子集)和 Massif 也很有趣,但我对后者没有经验。

于 2009-07-22T23:17:22.150 回答
5

作为google-perftools的一部分,Google 也有一个不错的分析器——它包含在 Debian / Ubuntu 和可能的其他发行版中。

于 2009-07-23T00:38:59.737 回答
5

看看KCacheGrind,它是valgrind的图形化前端,使用起来非常简单。

于 2009-07-23T00:42:02.483 回答
2

gprof 是用于分析的标准 gnu 工具。

于 2009-07-22T23:25:39.403 回答
2

看看Sysprof。您的发行版很可能已经可用。

请注意,如果您的应用程序是使用帧指针编译的,那么所有提到的分析器都工作得最好。也就是说,您应该在 gcc 命令行上使用 -fno-omit-frame-pointer。

于 2013-02-24T09:56:20.350 回答
0

这就是我使用的。

于 2009-08-09T00:59:21.100 回答