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.bz2bunzip2 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博客_内存泄露检测工具
valgrind内存泄漏检测相关推荐
- Unix下C程序内存泄漏检测工具Valgrind安装与使用
Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具. Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Goo ...
- Valgrind ---内存调试,内存泄漏检测以及性能分析的软件开发工具
Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具.Valgrind这个名字取自北欧神话中英灵殿的入口. 一般使用方式 valgrind --leak-check=full ...
- C/C++的内存泄漏检测工具Valgrind memcheck的使用经历
Linux下的Valgrind真是利器啊(不知道Valgrind的请自觉查看参考文献(1)(2)),帮我找出了不少C++中的内存管理错误,前一阵子还在纠结为什么VS 2013下运行良好的程序到了Lin ...
- C++ 内存泄漏检测工具valgrind简单使用
C++ 内存泄漏检测工具valgrind简单使用 目录 C++ 内存泄漏检测工具valgrind简单使用 valgrind安装 valgrind测试内存泄漏 valgrind安装 通过软件商店下载: ...
- 内存泄漏检测神器valgrind
title: 内存泄漏检测神器valgrind categories:[内存检测] tags:[valgrind] date: 2022/01/08 作者:hackett 微信公众号:加班猿 1.概述 ...
- 【安装配置】安装适用于 Linux 的 Windows 子系统 WSL ,完成 Clion 中对内存泄漏检测工具 Valgrind 的配置,亲测可用
关键词:[Linux] [WSL] [Clion] [Valfrind] 一.前言 今天在回答一个粉丝的评论(关于C++ delete 和 delete[ ])时,引出上面的系列问题,具体流程如下: ...
- Linux内存泄漏检测工具 Valgrind使用
一 .valgrind简介 最近在Linux下程序碰到了内存泄漏的问题,所以在网上找了找Linux下的内存泄漏检测工具,找到了Valgrind这款功能很强大的内存调试.内存泄漏检测以及性能分析.检测线 ...
- Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构与底层研发
Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构与底层研发 Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构 ...
- 内存泄漏检测工具(转载)
内存泄漏检测工具2007年08月08日 1. ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库. 2. Dmalloc-Debug ...
- C++ 程序内存泄漏检测方法
一.前言 在Linux平台上有valgrind可以非常方便的帮助我们定位内存泄漏,因为Linux在开发领域的使用场景大多是跑服务器,再加上它的开源属性,相对而言,处理问题容易形成"统一&qu ...
最新文章
- PMP知识要点(第七章)
- 让Android Studio代码提示不区分大小写的方法
- Rearrange an array of positive and negative integers
- 【JDBC】各版本jar包下载网址及Tomcat下载
- vue 固定div 滚动_vue.js-div滚动条隐藏但有滚动效果的实现方法
- Ubuntu 禁用 触摸板
- 转换GridView的内容到Excel里面 ---带有格式
- 【CCCC】L3-016 二叉搜索树的结构 (30分),,手动建堆(二叉搜索树节点询问),map写法
- 怎样利用通达信公式选股?
- Matlab出错向量长度必须相同,代码已贴。错误使用plot3,向量长度必须相同
- java牛顿法求方程根_牛顿迭代法 求方程根
- AMD和英特尔cpu区别
- 送 10 本签名书!
- ElasticSearch服务器泄露 5700万个人数据外泄
- AndroidTV语音搜索
- CC00154.bigdatajava——|JavaMySQL.高级.V26|——|MySQL.v27|锁机制_锁概念介绍|
- 提高spark任务稳定性1 - Blacklist 机制
- 淘宝店铺商品搬家到微店
- MongoDB使用用户登录访问
- css 弹出窗口之后的笼罩层
热门文章
- python12306买票_Python 使用 selenium 实现半自动购买12306火车票
- apche服务器网站访问503错误,apache部署python程序出现503错误的解决方法
- NYOJ234吃土豆
- 经典面试题:手机扫描二维码的测试用例(建议收藏)
- 计算机专业 本科论文,计算机专业本科毕业设计和毕业论文的感悟
- MSDN 我告诉你(资源库)
- linux下c++程序崩溃,如何处理core dump
- c语言小熊时钟报告,C语言——小熊时钟.doc
- oland显卡HDMI热插拔问题分析
- 使用字体编辑软件修改字体