【发布时间】:2018-05-08 23:47:56
【问题描述】:
在各种示例程序上使用 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 条指令一样,并且仅在程序实际计算时才进行,而不是等待。