gprof 输出为空

4

在Ubuntu 17.04中使用gprof 2.28和gcc 6.3.0对多个示例程序进行测试,每个类别的输出结果均为空。如果在一个示例程序上运行gprof -i,则会得到以下结果:

1 histogram record
2 call-graph records
0 basic-block count records

我的编译看起来像这样:

cc -g -c sem_test.c -pg
cc -o sem_test sem_test.o -lpthread -pg

或者是这样的:
gcc -g3 -O0 -Wall -std=gnu99 -pg -fprofile-arcs -fno-inline -fno-reorder-functions sem_test.c -o sem_test -lpthread -pg

两者的结果相同。

我注意到我的gmon.out文件只有687字节,这似乎很低。


我敢打赌,你的 sem_test.c 几乎什么都没做,或者它所做的几乎全部来自于系统等待某些东西,例如信号量或 I/O。gprof 每 0.01 秒只能取样一次,相当于每执行 10^7 条指令才会进行一次取样,而且仅在程序实际计算时才会这样做,而不是等待。 - Mike Dunlavey
1个回答

2
这是一个glibc的bug/限制: 如果您无法安装修复后的glibc,可以使用-no-pie进行链接以禁用PIE。您的工具链可能会自动启用PIE。

我必须指定 -fno-pie。这里是 i386 上的 gcc 4.4.5。 - scai

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