为了调试写关于线程的信息,主要是core dump的信息,可以重载或者代替
malloc
free
realloc
函数,dmalloc 这个便是其这个作用的。但是由于dbmalloc性能影响较大。可以采用轻量级的重载,在malloc free realloc填充字符。最终通过core dump文件可以看到原因。
方案措施开始想到用dlopen,dlsymbol,dlload这种方案,但是这种方案会重复调用。是不可能实现的,最终采用的只能是用宏来代替。基本的方案就是定义一个公用的头文件,这个头文件的宏发生了变化,然后每个调用malloc,free等的都要包含头文件。当然在引用头文件的时候我们也要定义一个c/c++文件来重新实现,他不需要包含这个头文件。

在过程中遇到的问题
1、头文件的包含顺序,应该放在后面才会重新定义。
2、C/C++混合,malloc等是C的函数。
3、realloc会重新改变位置,比较容易出错的。
4、free(0)是可以的,要注意出错。

Posted on 2008-06-06 17:02 micheal's tech 阅读(1589) 评论(0)  编辑 收藏 引用 所属分类: C++ programme language

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理