Linux gprof输出的热功能丢失

Linux gprof输出的热功能丢失,linux,gcc,profiling,gprof,Linux,Gcc,Profiling,Gprof,我的gprof在linux系统上运行良好。我正在获取样本和一些通话计数信息。因此,我在一些函数中添加了属性((hot))。现在它们已经从gprof样本输出中消失,只有我的非热函数被“采样”。热函数仍然显示在调用计数信息中。我该如何解决这个问题 我怀疑发生了两件事中的一件。gprof根据它认为相关的地址进行过滤,热函数现在不在这个范围内,就像它们现在在.text.hot部分一样。或者,不知何故,热函数的调试数据中存在一些混乱,因此gprof忽略了它们。属性((热))也使得函数更有可能是内联的,至少

我的gprof在linux系统上运行良好。我正在获取样本和一些通话计数信息。因此,我在一些函数中添加了属性((hot))。现在它们已经从gprof样本输出中消失,只有我的非热函数被“采样”。热函数仍然显示在调用计数信息中。我该如何解决这个问题

我怀疑发生了两件事中的一件。gprof根据它认为相关的地址进行过滤,热函数现在不在这个范围内,就像它们现在在.text.hot部分一样。或者,不知何故,热函数的调试数据中存在一些混乱,因此gprof忽略了它们。

属性((热))
也使得函数更有可能是内联的,至少在同一源文件中。只有在调用函数的非内联版本(可能来自不同的模块)时,调用计数才会增加。这些函数不会显示在示例中,因为探查器只知道调用站点


您应该能够通过检查呼叫计数来检测是否发生这种情况。如果使用
属性((hot))
时它们的值要低得多,那么内联就是原因。

感谢您的这个想法。我已经查看了映射文件,在.text.hot部分可以看到实例。我还有一个工具,可以显示热线。如果函数是内联的,它们将从“hot functions”列表中消失,但行仍然是热的。所以看起来函数的统计数据完全丢失了。我还可以深入研究“函数”,并经常找到属于内联函数的代码“行”。这并没有发生。统计数据中缺少样本:(您看过程序集输出(gcc选项-S)了吗?text.hot部分中的调试信息是否有所不同或缺失?我已经尝试使用Fedora 19中的普通gcc工具链和属性((hot))来重现这一点。)不会以任何方式更改gprof行为。能否发布工具链的详细信息以及编译程序时使用的标志?