如何在Linux上分配期间记录堆栈?

时间:2015-01-27 19:06:57

标签: c linux debugging memory malloc

在OS X上,在运行程序之前设置MallocStackLogging环境变量将导致malloc(3)free(3)在每次为每个内存区域调用时记录堆栈。这对于调试内存损坏问题特别有用,因为您可以回顾已损坏的区域的历史记录,并找出代码的哪个部分/应该对内存负责。

我知道我可以在Linux上使用__malloc_hook来编写我自己的调试工具实现,但我想知道是否有更简单的方法来完成同样的事情?在Linux上跟踪分配的推荐方法是什么?

1 个答案:

答案 0 :(得分:2)

我从未听说过这个功能。但是,如果不可能,你仍然可以将它们包裹在一些能够实现这一目标的函数中。

或者,考虑一下内存分析器(堆后释放用户,内存泄漏,缓冲区溢出等),例如valgrind或AddressSanitizer。