Valgrind内存管理工具


 内存管理是软件开发中最为重要的环境,如果一个长期运行的程序,即使其中的某个函数每一次泄露1KB的内存空间,该函数每1分钟调用100次,100天后,将产生60*24*10*1KB=1.44GB的内存空间,对于一般系统来说,其实早已处于死机的状态。如何能够查看这种内存泄露呢,可以使 用Valgrind内存管理工具。

一:Valgrind简介
 Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。 最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Google-O'Reilly开源代码奖。 遵守GNU通用公共许可证条款,是一款自由软件。此工具由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架,模拟了一个CPU环境,并提供服务给其他工具:而其他工具则类似于插件, 利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所示:
Valgrind包括以下工具:
      1.memcheck 探测程序中内存管理存在的问题。它检查所有对内存的读/写操作,并截取所有的malloc/new/free/delete调用,因此memcheck工具能够探测到以下问题:
       (1)使用为初始化的内存。
       (2)读/写已经被释放的内存。
       (3)读/写不恰当的内存空间。
       (4)读写内存越界。
       (5)内存泄露。
       (6)使用malloc/new/new[]和free/delete/delete[]不匹配。
       (7)src和dst的重叠
    2.Callgrind 它主要用来检查程序中函数调用过程中出现的问题。 
  3.Cachegrind它主要用来检查程序中缓存使用出现的问题。 
  4.Helgrind它主要用来检查多线程程序中出现的竞争问题。 
  5.Massif它主要用来检查程序中堆栈使用中出现的问题。 
  6.Extension可以利用core提供的功能,自己编写特定的内存调试工具。 

二:下载与安装
Valgrind可以使用源码安装,也可以使用软件包更新方法,在ubuntu系统下,可以使用一下命令跟新:
sudo apt-get install valgrind

http://www.valgrind.org

#wget http://www.valgrind.org/downloads/valgrind-3.8.1.tar.bz2
#tar xvf valgrind-3.8.1.tar.bz2
#cd valgrind-3.8.1
#./configure --prefix=/usr/local/webserver/valgrind
#make
#make install

三:Valgrind常用选项

 表3-2~表3-5列出了了常用选项:

四:测试代码

代码如下:

编译

#gcc -g -o bug bug.c

 

内存检查
#valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./bug

 

报告:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值