【问题标题】:gcc compiling with -pg doesn't produce binary needed for gprof使用 -pg 编译的 gcc 不会生成 gprof 所需的二进制文件
【发布时间】:2014-08-25 16:52:25
【问题描述】:

我遇到了一个小问题,需要一些帮助。作为测试的一部分,我想在一些 OpenMP 和 MPI 混合代码上运行 gprof。我知道 gprof 依赖于在您使用 -pg 开关编译 gcc(或 mpicc)时创建的二进制文件。

我已经尝试添加这个开关并且我的编译成功(因为没有报告错误),但是,没有创建二进制文件,但可以正常创建可执行文件。我还尝试在更简单的代码上执行此操作,该代码使用 pthread,结果相同。

请检查以下内容,让我听听您的想法。

gcc -pg --std=gnu99 -pthread -Wall -o pthreadsv0 pthreads.c

【问题讨论】:

  • gprof 信息是在您使用-pg 选项编译之后 程序执行 时创建的。尝试运行您的程序。 (你正在分析(gprof)程序的执行)
  • @lornix,它有效!既然你提到了它,我想知道我怎么没有想到这一点。请正式添加您的答案,以便我将其标记为正确。

标签: c gcc compiler-construction performance-testing gprof


【解决方案1】:

遇到了同样的问题。出现问题是因为我使用 Ctrl-C 关闭程序的执行而不是正确退出(在我的情况下关闭 GUI 窗口)。

【讨论】:

    【解决方案2】:

    gprof 信息是在您使用-pg 选项编译后执行 程序 时创建的。尝试运行您的程序。 (你正在分析(gprof)程序的执行)

    -pg 编译选项添加了在程序执行时创建分析信息所需的逻辑。如果需要或需要多次执行程序,“仪表化”代码可以将描述逻辑流程和时序的数据写入gmon.out 文件。

    【讨论】:

      【解决方案3】:

      我怀疑您提到的二进制文件实际上是配置文件数据文件 (gmon.out),它是在您运行程序时生成的(必须使用 -pg 标志编译)。只需执行您的程序,看看是否有gmon.out 文件。

      【讨论】:

      • 非常感谢您的洞察力。它奏效了,我非常感激。
      猜你喜欢
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多