【问题标题】:gprof output is emptygprof 输出为空
【发布时间】: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 条指令一样,并且仅在程序实际计算时才进行,而不是等待。

标签: c gcc gprof


【解决方案1】:

这是一个 glibc 错误/限制:

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

【讨论】:

  • 我必须指定-fno-pie。 i386 上的 gcc 4.4.5 在这里。
猜你喜欢
  • 2017-07-25
  • 2018-03-19
  • 1970-01-01
  • 2011-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
相关资源
最近更新 更多