我需要在Linux上分析一些运行C ++的代码。你们能推荐一些个人资料吗?
答案 0 :(得分:36)
使用gprof。
只需使用-pg
标志进行编译(我认为(但不确定)你必须改进优化。)并使用gprof来分析你的可执行文件随后将生成的gmon.out文件。
例如:
gcc -pg -o whatever whatever.c
./whatever
gprof whatever gmon.out
与g ++和cpp相同。
答案 1 :(得分:22)
valgrind是一个众所周知的Linux分析器
答案 2 :(得分:13)
从RotateRight(http://www.rotateright.com)缩放是我一直在使用的。它具有函数的蝶形视图,您可以双击任何函数以深入到源代码或asm代码。使用调试信息(-g)构建以查看源代码,但您仍应构建并分析优化的代码。
答案 3 :(得分:12)
我是Oprofile的粉丝。它涉及安装一个内核模块,并且有一点学习曲线,但它相当强大,适用于没有调试符号的优化程序/程序。
Vtune是英特尔制造的另一个非常强大的分析器。我相信Linux版本对于非商业软件是免费的。
还有dfa提出的Valgrind工具套件。 Callgrind可能是你最感兴趣的.Cachegrind(其功能集是Callgrind的子集)和Massif也很有趣,但我对后者没有经验。
答案 4 :(得分:5)
查看KCacheGrind这是valgrind的图形前端,让它非常易于使用。
答案 5 :(得分:4)
Google还有一个很好的分析器作为google-perftools的一部分 - 它们包含在Debian / Ubuntu和其他可能的发行版中。
答案 6 :(得分:2)
gprof是用于分析的标准gnu工具。
答案 7 :(得分:2)
看看Sysprof。您的分发很可能已经可用。
请注意,如果您的应用程序是使用帧指针编译的,那么所有提到的分析器都可以发挥最佳效果。也就是说,你应该在gcc命令行上使用-fno-omit-frame-pointer。
答案 8 :(得分:1)