0

我的 gprof 在 linux 系统上工作正常。我正在获取样本以及一些呼叫计数信息。所以我在一些函数中添加了属性((hot))。现在它们已经从 gprof 示例输出中消失了,只有我的非热函数被“采样”。热门功能仍然出现在呼叫计数信息中。我该如何解决 ?

我怀疑发生了两件事之一。gprof 过滤它认为是相关地址的内容,并且热函数现在超出此范围,因为它们现在位于 .text.hot 部分中。或者,不知何故,热函数的调试数据存在一些混乱,因此 gprof 忽略了它们。

4

1 回答 1

1

attribute((hot))也使得函数更有可能被内联,至少在同一个源文件中。只有当函数的非内联版本被调用(可能来自不同的模块)时,调用计数才会增加。这些函数不会出现在示例中,因为分析器只知道调用站点。

您应该能够通过检查呼叫计数来检测是否发生了这种情况。如果它们比 低得多attribute((hot)),则内联将是原因。

于 2013-08-14T10:25:26.947 回答