2012-05-30 48 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)包含一些地址,则会引起一些有趣的信息。