博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

水龙卷

我是一个对自己进行debug的程序,所以行动迟缓些,不要见怪
  waterspout.cublog.cn

关于作者
姓名:何云龙
职业:Linux移动终端平台开发
介绍:走的更远些
|| << >> ||
我的分类


内存问题检测 - mcheck
The GNU C library (glibc 2 a.k.a linux libc6) 提供了一些能够检测内存分配/使用问题的功能,比如使用未初始化的内存,忘记释放内存等。

环境变量MALLOC_CHECK_在前面已经介绍过,这里要介绍的是GNU的扩展,mcheck, 一个简单易用但也比较有限的工具。
使用mcheck需要包含头文件<mcheck.h>,并且在执行前调用mtrace()。而且它也不能给出更多信息,只能用作内存问题检测的参考工具。如果想在程序中间中止检测,可以调用muntrace()。


用法
$ export MALLOC_TRACE=<outputfilename>
$ <runprog>
$ mtrace <prog> <outputfilename>

例子如下

#include <mcheck.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
        mtrace();
        char * buf = (char*) malloc(1024);
        // free(buf);
        return 0;
}


$ g++ test.cpp -o test
$ ./test
$ export MALLOC_TRACE=trace.log
$ mtrace test trace.log

Memory not freed:
-----------------
   Address     Size     Caller
0x090673c8    0x400  at 0x80483ea

reference:
http://wlug.org.nz/mcheck

发表于: 2007-08-08,修改于: 2007-08-08 12:42,已浏览389次,有评论0条 推荐 投诉


网友评论
 发表评论