实现跟踪 C 内存错误的工具,找到我重写的 malloc 等的调用位置
我被要求实现一个工具(针对 Linux),它有助于 C/C++ 程序的内存管理。主要目标是追踪内存泄漏,但我也在检查 memcpy 的重叠参数等。
我实际上需要我的版本来拦截对这些函数的所有调用(例如来自其他库的调用),所以我实际上需要覆盖它们。所以我不能使用所有帖子中建议的 #define 技巧。我的问题是如何找到原始源文件名、调用的函数以及行号。
到目前为止,我唯一的想法是使用调试信息编译程序并开始深入研究目标文件( ELF 因为我使用的是 linux )。我从来没有玩过目标文件,我只知道汇编语言的基础知识,所以这似乎是一项相当艰巨的任务。
还有其他更简单的方法可以实现这一目标吗?如果没有做过类似工作的人可以帮助我开始:)?
谢谢
I've been asked to implement a tool ( for linux ) which helps with the memory management of C/C++ programs. Main objective is to track down memory leaks but I am also checking for overlapping arguments to memcpy among other things.
I actually need my versions to intercept all calls to these functions ( from other libraries for example ) so I actually need to override them. So I can't use the #define trick suggested in all the posts. My question is how I am going to find the original source file name , function where the call was made and the line number.
My only idea so far is to compile the program with debugging info and start digging in on the object file ( ELF as I am using linux ). I've never played with object files and I only know the basics of assembly language so this seems a pretty hefty task.
Is there any other easier way to achieve this? If not anyone who has worked on something similar can help me get it started :)?.
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于您使用的是 Linux,因此可以使用 glibc 的 malloc 挂钩支持。 该页面上还提供了一个工作示例。
Since you're on Linux, you can use glibc's malloc hook support. A working example is also provided on that page.