valgrind内存泄漏检测

g++编译时加入-g(注意在编译程序的时候加上-g选项,打印错误信息的时候会给出行号。):
编译之前先修改Makefile:
all : debug
如果还是release的话,报错会显示不出行
然后编译:
g++ -g main.cpp -o test

产生可执行文件

valgrind源码安装:

下载:https://sourceware.org/pub/valgrind/valgrind-3.17.0.tar.bz2

bunzip2 valgrind-3.17.0.tar.bz2
sudo tar -xvf valgrind-3.17.0.tar
cd valgrind-3.17.0
./configure
make -j16
sudo make install
加入环境变量
vim ~/.bashrc
将 export PATH=${PATH}:/usr/local/valgrind/bin 加入到最后一行
激活环境变量
source ~/.bashrc
即可使用 valgrind 了

输入命令查看你的valgrind是否正常:

valgrind ls -l 

一、内存泄漏检测:

不保存日志:

valgrind --leak-check=full --show-reachable=yes --track-origins=yes  -v ./可执行文件 参数

--leak-check=full指的是完全检查内存泄漏
--show-reachable=yes是显示内存泄漏的地点
--track-origins=yes查看未初始化的来源

保存日志:

valgrind --tool=memcheck --leak-check=full --show-reachable=yes --track-origins=yes  --log-file=memchk.log -v ./可执行文件 参数

一些输出解读:

内存读写越界:
Invalid write of size 4 或者 Invalid read of size 1
踩内存:
Source and destination overlap in memcpy(0x41a602c, 0x41a6028, 5)
重复释放:
Invalid free() / delete / delete[]
非法指针:
Use of uninitialised value of size 4
由于非法指针赋值导致的程序崩溃:
Process terminating with default action of signal 11 (SIGSEGV)


二、性能检测(调优)

valgrind --tool=callgrind -v ./可执行文件 参数

输出 callgrind.out.PID 文件
双击打开,如提示需要安装文件则安装

一般检测泄露的方法:
1、用valgrind检测泄漏的具体位置,然后改正(一般只修改 definitely lost),改正完再用valgrind检测
2、如果还有泄漏,但是分析不出明确原因,长时间跑一下(比如半天,一天等),看看是否有内存持续增加的现象(原因:valgrind有时候有误报)
3、补充:gdb是调试程序找bug的,功能强大,远胜windows的vs系列调试

更多资料:

Linux/C++ segment default错误 double free or corruption - 简书

Linux下几款C++程序中的内存泄露检查工具 - 小小鸟儿! - 博客园

double free or corruption错误定位_手边笔记-CSDN博客

关于C,C++的内存问题的定位 - LyndonYoung - 博客园

辅助类的方法 https://www.jb51.net/article/207085.htm

mtrace方法  Linux C / C++ 编程检查内存泄露的方法 – 悟能

refer:

Valgrind 使用入门 - 云+社区 - 腾讯云

linux下利用valgrind工具进行内存泄露检测和性能分析_yanghao23的专栏-CSDN博客_valgrind分析

valgrind工具使用详解_高司机的专栏-CSDN博客_valgrind工具

Valgrind

more refer:

C/C++的内存泄漏检测工具Valgrind memcheck的使用经历_三少GG-CSDN博客

more more:

Linux下几款C++程序中的内存泄露检查工具_u012662731的博客-CSDN博客_linux查看内存泄露工具

在 Linux 平台中调试 C/C++ 内存泄漏方法(转) - the_tops - 博客园

今日头条

如何在linux下检测内存泄漏 - Splace - 博客园

Linux 下几款程序内存泄漏检查工具_mlove编程-CSDN博客_linux内存泄露工具

C++内存泄露检查的5个方法_We_are_family678的博客-CSDN博客_c++检查内存泄露

C++内存泄漏检测_ShaYx1991的博客-CSDN博客

【转】C/C++内存泄漏及检测 - 阿玛尼迪迪 - 博客园

C++内存泄漏检测工具-Valgrind使用简介_wu_cai_的专栏-CSDN博客_内存泄漏工具

Linux下几款C++程序中的内存泄露检查工具_OSKernelLAB(gatieme)-CSDN博客_内存泄露检测工具

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值