【问题标题】:gprof - File is missing call-graph datagprof - 文件缺少调用图数据
【发布时间】:2011-12-03 19:28:53
【问题描述】:

我刚开始使用 gprof 并尝试生成调用图。 我正在使用 cmake 来设置我的 makefile,并且我正在设置 CMAKE_EXE_LINKER_FLAGS = -gp 来启用分析。我启用的唯一 cxx 标志是 -g。

然后我只需在我的 gmon.out 文件上调用 gprof。

生成的输出文件只有一个平面配置文件,其中调用、self ts/call 和 total ts/call 都是空的。

更重要的是,它不会生成调用图。 如果我在运行 gprof 时尝试显式提供 -q 以生成调用图,则会显示“文件缺少调用图数据”。

我不确定我在这里做错了什么,并希望得到有关解决此问题的指示。

谢谢。

【问题讨论】:

  • 我很想知道是否有人向您推荐了 gprof,以及给出的原因。 You can do better than gprof.
  • gprof 没有被推荐给我。我只是在寻找一种快速简便的方法,而 gprof 对我来说就是这样。我确实看过你的帖子。坦率地说,我只是有点懒得通读:p 不过我会花时间这样做。
  • 不同的分析器做不同的事情,而且它们并不都一样好。我在Zoom 中没有任何股份,但我认为,随着分析员的发展,它正在做正确的事情。也就是说,堆栈采样(不仅仅是程序计数器)、挂钟时间(不仅仅是未阻塞的 CPU 时间)以及按代码行(而不是函数/方法)报告百分比。

标签: c++ g++ gprof call-graph


【解决方案1】:

链接时可能缺少-pg?

【讨论】:

    【解决方案2】:

    分析的正确开关是-pg,而不是-gp。这是你在做的吗?

    【讨论】:

    • 好吧.. 我会假设作为开关,字符可以互换。不过可以肯定的是,我交换了它们,但仍然看不到调用图
    • 另外,您的程序是否包含任何功能? gprof如果没有函数就不会输出任何有用的东西...
    • @Vaidy: -pg 是一个选项,而不是一对开关。 GCC 在 *nix 世界中有点不寻常,因为它(就像其他一些已经存在了一段时间的程序一样)不使用 -- 进行长选项。
    • @Vaidy 更改开关后可能需要重新编译
    • @Dennis & David 我清理了构建目录并在更新我的开关后重新编译。我在这里尝试分析的代码是光线追踪器。所以是的,它包含一些安静的功能。就像我在 OP 中提到的那样,我得到了一个平面配置文件,其中包含我所有方法的时间安排。但没有调用图。这是我得到的链接pastebin.com/4EYjHMEv
    猜你喜欢
    • 2016-12-26
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 2022-10-12
    • 2016-10-09
    • 2016-05-14
    相关资源
    最近更新 更多