memory-leaks - tcmalloc不生成堆栈跟踪

标签 memory-leaks tcmalloc

我正在运行一个与tcmalloc链接的二进制文件,它没有生成堆栈跟踪
它正在检测泄漏。

The output says:
The 1 largest leaks:
Leak of 1401231 bytes 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());

关于如何调试此的任何想法?

最佳答案

我建议尝试使用-fno-omit-frame-pointer(gcc)构建程序,因为在某些设置中可能需要帧指针才能获得堆栈跟踪。

tcmalloc通常使用libunwind来获取堆栈跟踪,但是由于死锁问题,它并非在所有地方都可用。

一个有趣的信息是生成的文件(在本例中为/tmp/prog.15062.prog-end.heap)是否包含一些地址。

关于memory-leaks - tcmalloc不生成堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10818825/

相关文章:

c++ - 在我的 C++ 项目中使用 tcmalloc

c - tcmalloc/jemalloc 和内存池之间有什么区别(以及选择的理由)?

AngularJS Karma 单元测试内存泄漏

c++ - 是否有误报 valgrind "possibly lost"报告的简单示例?

javascript - 我是否遇到内存泄漏,或者只是在 Firefox 中使用了高内存?

c++ - tcmalloc ReleaseFreeMemory() 没有正确释放内存

linux - 全局使用Google的malloc?

c++ - 如何找到内存泄漏的位置?

windows - 为什么系统在使用指针 Windows 时分配更多内存?

gcc - 与 libtcmalloc ubuntu 链接