c - 实现跟踪 C 内存错误的工具,找到从哪里调用我覆盖的 malloc 等

标签 c linux malloc elf object-files

我被要求实现一个工具(用于 linux),它有助于 C/C++ 程序的内存管理。主要目标是追踪内存泄漏,但我也在检查 memcpy 的重叠参数等。

我实际上需要我的版本来拦截对这些函数的所有调用(例如来自其他库),所以我实际上需要覆盖它们。所以我不能使用所有帖子中建议的#define 技巧。我的问题是如何找到原始源文件名、调用函数和行号。

到目前为止,我唯一的想法是使用调试信息编译程序并开始挖掘目标文件(ELF,因为我使用的是 linux)。我从来没有玩过目标文件,我只知道汇编语言的基础知识,所以这似乎是一项非常繁重的任务。

有没有其他更简单的方法来实现这个目标?如果不是任何从事过类似工作的人都可以帮助我开始:)?。

谢谢

最佳答案

因为你在 Linux 上,你可以使用 glibc 的 malloc hook support.该页面上还提供了一个工作示例。

关于c - 实现跟踪 C 内存错误的工具,找到从哪里调用我覆盖的 malloc 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922602/

相关文章:

c - 跟踪子进程的死亡

c - 对 "Programming in C"这本书感到有点困惑(Stephen Kochan)

c++ - 我的 friend 无法在他的 Linux 发行版上运行我的 openGL 程序

linux - 如何使用 Babeltrace-log

c - 将 fscanf 与动态分配的缓冲区一起使用

c - C 低通滤波器

c - 使用特定的 OpenSSL 版本构建 OpenVPN

c++ - 使用 GDB 修复大型项目中的双重释放或损坏 (!prev) 错误

Linux Centos 6 如何过滤端口 80 + 破坏 Apache 2

c++ - C++ 中的 "new"和 "malloc"和 "calloc"有什么区别?