如何在 Linux 中使用 gprof?
Posted
技术标签:
【中文标题】如何在 Linux 中使用 gprof?【英文标题】:how to use gprof in Linux? 【发布时间】:2011-07-25 12:42:03 【问题描述】:我在文件 test.c
中有一个 C 代码。我必须使用 grof 对其进行分析。我已使用以下命令来执行此操作。
gcc -p -o result test.c
./result
gprof result
输出的一部分如下所示:
`平面配置文件: 每个样本计为 0.01 秒。 没有时间积累
% 累计自我自我总计 time seconds 秒调用 Ts/调用 Ts/调用名称`
问题是无论我使用什么复杂或简单的程序每个样本计数都不会从 0.01 秒开始变化。为什么会这样,并且没有时间累积并显示在各个列下。
【问题讨论】:
还有其他方法可以做到吗? “必须”意味着我必须对其进行分析我并不一定意味着使用 gprof。 好吧,当我的目标是定位要优化的代码以使应用程序尽可能快(而不是仅仅测量需要多长时间)时,this is how I do it。我已经这样做了很长时间了,但我仍然很困惑,这并不是简单地被认为是显而易见的。 【参考方案1】:您在 gcc 中使用了错误的命令行选项。 -p
用于不同的旧分析器 - 对于 gprof
,您需要 -pg
。
如果您仍然没有看到任何时间累积,这只是意味着您的程序没有消耗足够的 CPU 时间来注册 - gprof
使用基于样本的分析,并且运行时间不够长,无法采集任何样本.
【讨论】:
你能推荐另一种分析 CPU 消耗的方法吗?以上是关于如何在 Linux 中使用 gprof?的主要内容,如果未能解决你的问题,请参考以下文章
在 Linux for c++ 中使用 gprof -f 选项
如何使用带有 gprof 的 makefile 重新编译依赖项?