gprof 输出为空

gprof output is empty

在 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 字节,看起来很低。

这是一个 glibc bug/limitation:

如果您无法安装固定的 glibc,您可以 link 和 -no-pie 来禁用 PIE。您的工具链可能会自动启用 PIE。