带ptrace的内存调试器

时间:2012-11-26 19:53:57

标签: c linux memory-leaks ptrace

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

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

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

1 个答案:

答案 0 :(得分:0)

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

  1. 从一个流程切换到另一个流程的开销非常适用于非平凡的程序。

  2. 与其他方法相比,您最终会花费相同数量的内存来存储所有权信息。 (这是我实际想要改进的地方)

  3. 有很多功能可以在堆上运行,很容易错过一些。