我的gprof在linux系统上工作正常。我正在获取样本以及一些呼叫计数信息。所以我将属性((热门))添加到某些功能中。现在他们已经从gprof示例输出中消失了,只有我的非热门函数被“采样”了。热门功能仍会显示在呼叫计数信息中。我该如何解决这个问题?
我怀疑发生了两件事之一。 gprof过滤它认为是相关的地址和热门函数现在超出了这个范围,因为它们现在位于.text.hot部分。或者,不知何故,热函数的调试数据存在一些混淆,因此gprof忽略它们。
答案 0 :(得分:1)
attribute((hot))
也更有可能将函数内联,至少在同一源文件中。如果调用函数的非内联版本(可能来自不同的模块),则只会增加调用计数。这些函数不会显示在样本中,因为探测器只知道呼叫站点。
您应该可以通过检查通话计数来检测是否发生了这种情况。如果它们与attribute((hot))
相比更低,那么内联就是原因。