我使用 GNU gprof 2.15.94.0.2.2 对我的 C++ 程序进行分析,该程序的调用周期很大。正如gprof 的文档所示,我希望在调用图输出中看到如下所示的内容:
index % time self children called name
----------------------------------------
1.77 0 1/1 main [2]
[3] 91.71 1.77 0 1+5 <cycle 1 as a whole> [3]
1.02 0 3 b <cycle 1> [4]
0.75 0 2 a <cycle 1> [5]
0 0 6/6 c [6]
----------------------------------------
但是,我<cycle as a whole>
的所有条目都没有列出任何来电者。他们都是这样的:
index % time self children called name
----------------------------------------------
[8] 65.6 259.55 5342.63 9334767+60122608 <cycle 2 as a whole> [8]
133.28 2051.45 12043564+74015448 foo <cycle 2> [14]
18.90 976.38 2379645 bar <cycle 2> [21]
...
-----------------------------------------------
由于我的周期非常大,因此很难在一个周期中通过单个函数跟踪调用者。
谁能告诉我为什么输出中缺少循环调用者,以及如何让它们出现?