我想扩展一个具有内存调试器功能的现有工具(只是泄漏检测)。
我知道一些内存调试器的工作原理是替换malloc / free并跟踪要释放的待处理内容以及分配它的人员;或者通过在某种虚拟机上运行该进程并监视内存访问。
我想知道使用ptrace()
在malloc / free上设置断点是否合理,而是使用 dmalloc 进行重建,并在单独的进程中监视分配。会不会太慢?是否有其他工具以这种方式工作?
答案 0 :(得分:0)
出于以下几个原因,使用调试器和陷阱malloc / free调用是不切实际的:
从一个流程切换到另一个流程的开销非常适用于非平凡的程序。
与其他方法相比,您最终会花费相同数量的内存来存储所有权信息。 (这是我实际想要改进的地方)
有很多功能可以在堆上运行,很容易错过一些。