GCC使用-pg选项编译不产生Gprof所需的二进制文件

4
我遇到了一点问题,需要一些帮助。作为我的测试的一部分,我想在一些 OpenMPMPI 混合代码上运行 gprof。我知道 Gprof 依赖于二进制文件,该文件是在编译 GCC(或 mpicc)时使用 -pg 选项创建的。
我尝试添加这个选项,编译成功(没有报错),但是二进制文件没有被创建,只生成了可执行文件。我也尝试在更简单的使用 pthreads 的代码上进行操作,结果相同。
请查看下面的内容,并告诉我你的想法。
gcc -pg --std=gnu99 -pthread -Wall -o pthreadsv0 pthreads.c

GCC使用-pg编译时无法生成Gprof所需的二进制文件。


2
当您使用-pg选项编译程序后,执行程序时会创建gprof信息。尝试运行您的程序。(您正在对程序的执行进行分析(gprof)) - lornix
@lornix,太好了!既然你提到了,我不知道为什么我没想到。请正式添加您的答案,以便我将其标记为正确。 - kfkhalili
3个回答

4

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

只需执行程序,看看是否有 gmon.out 文件。


1
非常感谢您的见解。它起作用了,我非常感激。 - kfkhalili

0
我遇到了同样的问题。这个问题是因为我使用 Ctrl + C 来关闭程序的执行,而不是使用适当的退出方式(在我的情况下是关闭 GUI 窗口)。

0

在使用-pg选项编译后,当您执行程序时,Gprof信息将被创建。尝试运行您的程序(您正在对程序的执行进行分析(Gprof))。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接