在 g++ 中为 gprof 编译
Posted
技术标签:
【中文标题】在 g++ 中为 gprof 编译【英文标题】:Compiling in g++ for gprof 【发布时间】:2010-05-03 19:10:18 【问题描述】:我不理解 gprof 关于如何编译程序以使用 gprof 进行分析的文档。在 g++ 中,除了-pg
选项之外,是否还需要使用-g
选项(调试信息)进行编译。在每种情况下,我都会得到不同的结果,我想看看我的应用程序的瓶颈在哪里是发布模式,而不是调试模式,编译器忽略了许多优化(例如内联)
【问题讨论】:
***.com/questions/1777556/alternatives-to-gprof/…-g
并不意味着关闭优化。 -O
控制优化。例如,您可以同时使用 -g
和 -O2
进行编译。
【参考方案1】:
documentation 表明您可以执行任一操作,注意您需要 -g 来表示 line by line profiling。所以如果你想在发布条件下进行分析,并且可以接受不逐行进行,你应该能够在没有 -g 的情况下进行编译。
【讨论】:
我只对函数调用感兴趣,而不是逐行分析。如果没有 -g 选项,许多正在调用的函数不会显示出来。我不认为这是由于内联,因为其中许多方法都是大方法(50 多行代码)。 @myahya,我认为它很可能是内联的。默认情况下,GCC 可以内联最多 400 条内部 GCC 指令的函数(我知道这些不会直接映射到代码行);见bazaar.launchpad.net/~vcs-imports/gcc/trunk/annotate/99780/gcc/…。另外,您使用的是什么编译标志?以上是关于在 g++ 中为 gprof 编译的主要内容,如果未能解决你的问题,请参考以下文章