gperftools未显示调用图结果

时间:2016-08-22 16:27:26

标签: profiling pprof gperftools

我已经安装了gperftools并收集数据,到目前为止看起来很合理。我看到一个节点(?)被大量采样 - 但我对该节点的调用者感兴趣 - 我没有看到它们?我也试过callgrind / kcachegrind,我觉得我错过了什么?使用--text

时,这是输出的片段
Total: 1844 samples
     573  31.1%  31.1%      573  31.1% US_strcpy
     185  10.0%  41.1%      185  10.0% US_strstr
     167   9.1%  50.2%      167   9.1% US_strlen
      63   3.4%  53.6%       63   3.4% PS_CompressTable
      58   3.1%  56.7%       58   3.1% LX_LexInternal
      51   2.8%  59.5%       51   2.8% US_CStrEql
      47   2.5%  62.0%       47   2.5% 0x40472984
      40   2.2%  64.2%       40   2.2% PS_DoSets
      38   2.1%  66.3%       38   2.1% LX_ProcessCatRange

所以我有兴趣看到US_strcpy的来电者,但我似乎没有?我从kcachegrind得到一个很好的调用图表0x40472984(仍然试图将其与符号匹配)

1 个答案:

答案 0 :(得分:0)

有几种方法:

a)pprof --web或kcachgrind会很好地向你显示调用者是否正确捕获。 pprof --traces(仅限github.com/google/pprof版本)有时很有用。这有点像迈克上面提到的低技术方法。

b)如果数据确实不可用,您就会遇到堆栈跟踪捕获和/或符号化问题。为此,使用libunwind构建gperftools并使用调试信息构建所有程序。