我已经安装了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的调用图(仍在尝试将其与符号进行匹配)
发布于 2016-08-26 00:40:45
有几种方法:
a) pprof --web或kcachgrind将很好地显示调用者,如果它被正确捕获的话。有时做pprof --traces很有用(只适用于github.com/google/pprof版本)。这有点像Mike上面提到的低技术方法。
b)如果数据真的不可用,那么堆栈跟踪捕获和/或符号化就有问题。为此,使用libunwind构建gperftools,并使用调试信息构建所有程序。
https://stackoverflow.com/questions/39084450
复制相似问题