valgrind Linux内存分析工具

 

使用C++语言,可以直接对内存进行操作,在提供了便利的同时也要求程序员有较高的内存保护意识。

valgrind是一个开源的Linux平台下的内存分析以及程序架构分析的很好的工具。

一:下载valgrind安装包

 

二:安装valgrind安装包

1、进入安装包解压后的目录文件夹 cd valgrind

2、运行 ./configure

备注:若提示命令没有执行的权限,则将该valgrind文件夹的权限修改为 可读写

3、编译 make

4、安装 make install

 

三:使用valgrind工具检查代码

1、进入自己程序所在的目录 mypro

    cd /

2、valgrind --tool=memcheck --leak-check=full --log-file="mypro.log" ./mypro

其中,

--tool=memcheck  :valgrind包括六种程序检测工具(memcheck;callgrind;cachegrind;helgrind;massif;extension),这里只使用第一种memcheck

--leak-check=full   :memcheck工具主要检查内存的使用情况,对内存泄露给出详细信息

--log-file="mypro.log"  :自己程序mypro退出后,memcheck将对内存进行检测,并生成测试文件,存储在mypro.log中,该文件的创建路径需要与mypro在同一个目录下。

备注:若没有--log-file="mypro.log" 运行参数,则memcheck的检测结果会在控制台中输出。

 

四:查看测试结果文件

1、打开文件mypro.log,可通过关键字查找定位错误位置

Invalid read:memcheck认为程序对不应该访问的内存进行了读操作

Invalid write:memcheck认为程序对不应该访问的内存进行了写操作

Mismatched free:memcheck检测到内存申请与释放不匹配

(用malloc申请,必须用free释放;用new申请,必须用delete释放;用new[]申请,必须用delete[]释放)

Conditional jump or move depends on uninitialised value:程序使用了没有经过初始化的变量。

(函数局部变量定义后要初始化;new的变量没有初始化)

LEAK SUMMARY:内存泄露总结。

 

 

 

五:总结

优先:

1、所有的错误均给出具体cpp名称以及代码行数,定位很准确!

2、各种类型错误检测比较齐全

不足:

1、对于程序运行过程中动态泄露的内存检测不明确,因为有些全局变量申请的内存空间在程序启动时初始化一次,在程序退出时会自动释放。而导致内存泄露的主要是一些程序运行过程中频繁的周期的进行内存的申请与释放的变量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值