2012-05-30 95 views
2

我正在運行一個與tcmalloc鏈接的二進制文件,它不會爲它正在檢測到的泄漏生成堆棧跟蹤 。tcmalloc不生成堆棧跟蹤

The output says: 
The 1 largest leaks: 
Leak of 14bytes in 82093 objects allocated from: 


If the preceding stack traces are not enough to find the leaks, try running THIS shell command: 

pprof ../../prog "/tmp/prog.15062.prog-end.heap" --inuse_objects --lines --heapcheck --edgefraction=1e-10 --nodefraction=1e-10 --gv 

當我運行pprof時,收到一條消息,指出沒有要打印的節點。

我包圍其中有由

HeapLeakChecker checker("prog"); 
.... 
assert(checker.NoLeaks()); 

任何想法疑似內存泄漏至於如何調試代碼?

+0

嗯....我通常使用deleaker或任何其他調試器類似的情況下... –

回答

0

我會建議嘗試使用-fno-omit-frame-pointer(gcc)編譯程序,因爲可能需要幀指針才能在某些設置中獲取堆棧跟蹤。

tcmalloc通常使用libunwind獲取堆棧跟蹤,但由於死鎖問題,這在任何地方都無法使用。

如果生成的文件(本例中爲/tmp/prog.15062.prog-end.heap)包含一些地址,則會引起一些有趣的信息。