0

我想使用内存调试器的功能(只是泄漏检测)扩展现有工具。

我知道一些内存调试器通过替换 malloc/free 并跟踪待释放的内容以及分配它的人来工作;或者通过在某种虚拟机上运行进程并监视内存访问。

我想知道使用ptrace()在 malloc/free 上设置断点是否有意义,而不是使用dmalloc进行重建,并在单独的进程中监视分配。会不会太慢?有其他工具以这种方式工作吗?

4

1 回答 1

0

由于以下几个原因,使用调试器和捕获 malloc/free 调用是不切实际的:

  1. 从一个进程切换到另一个进程的开销对于非平凡的程序来说是巨大的。

  2. 与使用其他方法相比,您最终将花费相似数量的内存来存储所有权信息。(这是我真正想要改进的)

  3. 有很多函数可以在堆上工作,很容易错过一些。

于 2014-04-19T02:55:19.787 回答