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检测内存泄露的范围和局限性.
阅读(1387) | 评论(0) | 转发(0) |