我被要求实现一个工具(用于 linux),它有助于 C/C++ 程序的内存管理。主要目标是追踪内存泄漏,但我也在检查 memcpy 的重叠参数等。
我实际上需要我的版本来拦截对这些函数的所有调用(例如来自其他库),所以我实际上需要覆盖它们。所以我不能使用所有帖子中建议的#define 技巧。我的问题是如何找到原始源文件名、调用函数和行号。
到目前为止,我唯一的想法是使用调试信息编译程序并开始挖掘目标文件(ELF,因为我使用的是 linux)。我从来没有玩过目标文件,我只知道汇编语言的基础知识,所以这似乎是一项非常繁重的任务。
有没有其他更简单的方法来实现这个目标?如果不是任何从事过类似工作的人都可以帮助我开始:)?。
谢谢
最佳答案
因为你在 Linux 上,你可以使用 glibc 的 malloc hook support.该页面上还提供了一个工作示例。
关于c - 实现跟踪 C 内存错误的工具,找到从哪里调用我覆盖的 malloc 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922602/