如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 gprof 分析系统调用?

在 Linux for c++ 中使用 gprof -f 选项

如何使用带有 gprof 的 makefile 重新编译依赖项?

如何让 gcc 为 gprof 生成信息?

如何使用 cmake 设置 g++ 的标志,以便 gprof 可以解散?

Linux性能调优之gprof和oprofile