[用-pg编译的gcc不会产生gprof所需的二进制文件

问题描述 投票:3回答:3

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

我已经尝试添加此开关,并且我的编译成功(因为没有报告错误),但是,没有创建二进制文件,而是按常规方式创建了可执行文件。我也尝试过在使用pthreads的更简单的代码上执行此操作,结果相同。

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

gcc -pg --std=gnu99 -pthread -Wall -o pthreadsv0 pthreads.c
c gcc compiler-construction performance-testing gprof
3个回答
1
投票

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

-pg编译选项添加了必要的逻辑,以便在执行程序时创建性能分析信息。如果需要或需要多次执行该程序,则允许“插入”代码将描述逻辑流和时序的数据写入gmon.out文件。


4
投票

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


0
投票

遇到相同的问题。出现问题是因为我用Ctrl-C而不是适当的退出来关闭程序的执行(在我的情况下,关闭GUI窗口)。

© www.soinside.com 2019 - 2024. All rights reserved.