在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