2012-04-09 102 views
15

我在Linux下使用Eclipse CDT,任何人都可以推荐一个好的分析器在该环境下请。Linux的Eclipse CDT剖析器

我也是新的C++和多线程编程,任何人都可以还提供有关如何运行多线程应用程序请,例如,如何寻找性能瓶颈剖析一些建议等

谢谢。

回答

12

我不知道这是不是最好的选择,但它绝对是明显的一个:gprof。您只需要将编译开关设置为正确(在项目属性 - > c/C++ build - >设置 - >调试中为该项目启用gprof(-pg))。 当你用这个选项编译程序时,你需要运行它(直到正常退出)。这会生成配置文件(gmon.out)。 您可以在eclipse中安装额外的插件,它可以将gmon.out的内容可视化(转至帮助 - >安装 - > Linux工具 - > GProf集成)。只要打开已生成的gmon.out文件,就像其他任何文件一样,只要安装了该插件即可。

+3

http://wiki.eclipse.org/Linux_Tools_Project/GProf/User_Guide – 2012-04-12 11:57:40

+1

有一点需要注意GProf使用(也许其他工具一样),是,如果您使用按Ctrl - 关闭你的应用程序C(就像通常关闭他写的服务器一样),那么gmon.out文件将不会被写入。 – kroiz 2014-01-12 20:27:08

+0

这里是http://stackoverflow.com/questions/1030829/gprof-reports-no-time-accumulated相关的问题。有人指出,如果像stdC++这样的依赖库中有一个没有使用-pg格式,那么就不会收集时序信息。这是真的吗? – Sergei 2015-05-05 09:50:42

3

正如dbrank0所述,您需要为该项目设置编译选项(-pg)。转到项目属性 - > c/C++编译 - >设置 - > C++编译 - >调试和检查生成gpof信息。当你编译程序(test_prof.c)时,你会得到一个exe文件(在我们的例子中是test_prof)。

$ ls 
test_gprof test_gprof.c 

当您运行它时,会在同一目录中生成一个gmon.out文件。

$ ls 
gmon.out test_gprof test_gprof.c 

gprof的工具与所述可执行文件的名称和上述生成的“是gmon.out”作为参数运行。这会生成一个分析文件,其中包含所有所需的分析信息。

$ gprof test_gprof gmon.out > analysis.txt 

将产生一个名为“analysis.txt”文件,该文件包含了所有的信息profilig并可以很容易地读出。 进一步的细节看http://www.thegeekstuff.com/2012/08/gprof-tutorial/

+0

嗨Umair, 这里是http://stackoverflow.com/questions/1030829/gprof-reports-no-time-accumulated相关的问题。有人指出,如果像stdC++这样的依赖库中有一个没有使用-pg格式,那么就不会收集时序信息。你能确认或反驳吗? – Sergei 2015-05-05 09:54:28