malloc 调用跟踪浅谈

来源:互联网 发布:机锋市场淘宝店 编辑:程序博客网 时间:2024/05/16 13:05

之前转载了一篇文章,关于memory leak的检出。

http://blog.csdn.net/robertsong2004/article/details/52496184

这里面使用的方法需要去修改源代码,这是最大的问题。


不修改源代码的方式,可以是实现一个库,这个库里实现了 malloc / free 的 wrapper,在 malloc / free 里对分配的信息

进行统计后,再去调用 libc 里的真正的实现。

参考:

#define _GNU_SOURCE#include <dlfcn.h>#include <stdio.h>static void *(*lt_malloc) (size_t size);__attribute__ ((constructor))static void init_mem_func (void) {lt_malloc = (void *(*)(size_t))dlsym(RTLD_NEXT, "malloc");}void *malloc(size_t size){void *ptr;ptr = lt_malloc(size);printf("malloc size(%d) at (%p)\n", size, ptr);return ptr;}


编译如下:

gcc -o libmalloc.so malloc.c -ldl -fPIC -shared


测试示例:

LD_PRELOAD=./libmalloc.so /tmp/test
malloc size(1) at (0x7d2010)
malloc size(2) at (0x7d2010)
malloc size(3) at (0x7d2010)
malloc size(4) at (0x7d2010)
malloc size(5) at (0x7d2030)


0 0
原创粉丝点击