Chinaunix首页 | 论坛 | 博客
  • 博客访问: 23222
  • 博文数量: 10
  • 博客积分: 400
  • 博客等级: 下士
  • 技术积分: 120
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-27 09:17
文章分类

全部博文(10)

文章存档

2009年(10)

我的朋友

分类: C/C++

2009-09-02 20:26:20

1. what

    dmalloc是一种用于检查C/C++内存泄露(leak)的工具,即检查是否存在直到程序运行结束还没有释放的内存,并且能够精确指出在哪个源文件的第几行。
 

2. download

    dmalloc以一个运行库的方式发布()。
 

3. install

    (1) tar -zvxf dmalloc-5.5.2.tgz
    (2) cd dmalloc-5.5.2
    (3) ./configure
    (4) make
    (5) make install
        1) install libdmalloc.z到/usr/local/lib/目录下;
        2) install dmalloc.h到/usr/local/include/目录下;(Permission denied, so should sudo make install)
        3) install dmalloc到/usr/local/bin/目录下。
    (6) 在~/.bashrc中添加function dmalloc { eval 'command dmalloc -b $*'; }
    (7) source ~/.bashrc
    (8) dmalloc -l ~/y -i 100 low
        将export  DMALLOC_OPTIONS=debug=0x4e48503,inter=100,log=/home/ubuntu/y

4. usage

    针对需要使用dmalloc的源代码作如下修改:
    (1) 在源代码中,包含头文件dmalloc.h
    (2) 在Makefile中,添加CFLAGS -DDMALLOC_FUNC_CHECK
    (3) 添加-ldmalloc选项
    运行之后,可以在~/y中查看检测信息。如果不使用绝对路径,则logfile会生成在app所在的目录。

5. dmalloc in Embedded Linux

 

6. advantage & disadvantage

advantage:
    能检测未释放的内存、同一段内存被释放多次、位址存取错误及不当使用未分配之内存区域。
disadvantage:
    只检测堆上内存,对栈内存和静态内存无能为力。 
    只用于利用malloc申请的内存,而对使用sbrk()或mmap()分配的内存无能为力。
    不能用于读写没有申请或没有初始化的内存、写只读内存。

7. Reference

[1] dmalloc使用. 
[2] 使用Dmalloc检测内存泄露的范围和局限性.
[3] dmalloc在嵌入式的开发板上的应用.http://blog.sina.com.cn/s/blog_613480a50100ekc0.html
阅读(1344) | 评论(0) | 转发(0) |
0

上一篇:syslogd in Busybox

下一篇:chariot test

给主人留下些什么吧!~~