一、为什么需要Valgrind?

调试各种各样的崩溃问题,内存泄露问题,内存二次释放问题(double free),core dump,

Valgrind 是个开源的工具,功能很多。例如检查内存泄漏工具---memcheck。

二、Valgrind的下载和安装

1. 下载  (版本根据你当时的最新版本。官网: http://www.valgrind.org/downloads/)

wget https://sourceware.org/pub/valgrind/valgrind-3.15.0.tar.bz2

2. 解压

tar xjvf valgrind-3.15.0.tar.bz2

3. 安装

yum install autoconf
yum install automake
cd valgrind-3.15.0
chmod 775 autogen.sh
./autogen.sh
#如果提示aclocal相关信息,则需要 yum install autoconf automake
./configure
make
make install

查看是否安装成功,使用脚本

valgrind --version

Valgrind使用方法:

1. C++代码,测试用例

//hello.cpp
#include<iostream>
#include<stdio.h>using namespace std;int main()
{char *p = (char*)malloc(10);free(p);free(p);return 0;
}

2. 编译和链接

-g选项要添加,生成a.out

g++ hello.cpp -g

3. 运行和调试

valgrind --log-file=output.txt --tool=memcheck --leak-check=yes --show-reachable=yes ./a.out

4. 输出日志

其中--log-file 是输出日志到文件。去掉这个选项可以在终端显示上面观看

==128714== Memcheck, a memory error detector
==128714== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==128714== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==128714== Command: ./hello
==128714== Parent PID: 7668
==128714==
==128714== Invalid free() / delete / delete[] / realloc()
==128714==    at 0x4C2AF5D: free (vg_replace_malloc.c:540)
==128714==    by 0x4008B2: main (hello.cpp:13)
==128714==  Address 0x5a23040 is 0 bytes inside a block of size 10 free'd
==128714==    at 0x4C2AF5D: free (vg_replace_malloc.c:540)
==128714==    by 0x40088A: main (hello.cpp:11)
==128714==  Block was alloc'd at
==128714==    at 0x4C29E63: malloc (vg_replace_malloc.c:309)
==128714==    by 0x40085E: main (hello.cpp:9)
==128714==
==128714==
==128714== HEAP SUMMARY:
==128714==     in use at exit: 0 bytes in 0 blocks
==128714==   total heap usage: 1 allocs, 2 frees, 10 bytes allocated
==128714==
==128714== All heap blocks were freed -- no leaks are possible
==128714==
==128714== For lists of detected and suppressed errors, rerun with: -s
==128714== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

上面的结果可以看到1次申请内存,两次释放内存。提示报错了。

Valgrind 的下载安装和使用 (centos7.6, 其他linux应该类同)相关推荐

  1. VMware12 下载安装虚拟机操作步骤详解(Linux操作系统CentOS 7)超详细版

    目录 一,下载VMware安装包和 CentOS 7 镜像文件 二,安装VMware 三,下载 CentOS 7 镜像文件 四,开始用VMware创建一个新的虚拟机 五,新的虚拟机设置 一,下载VMw ...

  2. 【虚拟机】在Windows11上下载安装VMware虚拟机以及Ubuntu(Linux)详细操作

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  3. Cmder下载安装和使用ssh远程连接linux

    目录 Cmder下载 Cmder使用 关于ssh远程连接Linux 安装ifconfig和ssh工具包 使用ifconfig查看Linux的ip地址 查看虚拟网卡状态是否打开 用Cmder Ping通 ...

  4. linux安装mysql5.7.24_下载安装 Ubuntu 19.04 “Disco Dingo” | Linux 中国

    虽然我们已经知道 Ubuntu 19.04 中的新功能 -- 我将在下面提到一些重要的地方,还会给出官方的下载链接.-- Ankush Das Ubuntu 19.04 "Disco Din ...

  5. CentOS7的下载安装教程

    文章目录 下载 安装 VMware CentOS CentOS7的安装 linux中安装Java linux中安装tomcat linux下安装MySQL linux下安装Nginx 下载 我们这里选 ...

  6. PuTTY 下载安装教程

    PuTTY 下载安装教程 为什么使用PuTTY? Linux大多应用于服务器,而服务器不可能像PC一样放在办公室,它们是放在IDC机房的,所以我们平时登录linux系统都是通过远程登录的.Linux系 ...

  7. KiCad 下载安装及镜像站介绍

    文章目录 [KiCad 简介](https://gitee.com/KiCAD-CN/kicad-cn-forum/blob/master/zh_CN/KiCad_description.md) [K ...

  8. 在 RHEL 8.6 linux系统里安装达芬奇18.1软件缺少的依赖软件,需要下载安装。 20221111.

    在 RHEL 8.6 linux系统里安装达芬奇18.1软件缺少的依赖软件,需要下载安装. 20221111. RPM包下载安装:http://www.rpmfind.net/linux/rpm2ht ...

  9. 1.2虚拟机VirtualBox+centos7下载安装教程

    虚拟机VirtualBox+centos7下载安装教程 安装前要求:下载安装目录不要带中文! 1.VirtualBox下载: 网址:https://www.virtualbox.org/wiki/Do ...

最新文章

  1. SecureCRT窗口输出代码关键字高亮设置
  2. IFE-16 addEventHandler跨浏览器实现事件绑定
  3. 【论文解读】打破常规,逆残差模块超强改进,新一代移动端模型MobileNeXt来了!精度速度双超MobileNetV2...
  4. mysql实体_mysql实体关系
  5. RHEL6入门系列之三十,服务管理
  6. Echart---多项柱状图-2D/H5
  7. 高仿国美在线底部代码实现
  8. sklearn自学指南(part59)--神经网络模型(监督)
  9. 多元线性回归中多重共线性_多重共线性如何在线性回归中成为问题。
  10. 安装redis和phpredis模块
  11. 华为发布会: 牛逼鸿蒙,吹水的大会
  12. 吴军,数学通识50讲
  13. python alpha beta 剪枝_AlphaBeta剪枝算法
  14. 宏观经济学通识课-读书笔记
  15. ubuntu下机械硬盘不能新建文件夹
  16. 温湿度传感器的原理与特点
  17. 今天的两个收获--linux的特性和海森堡式错误
  18. 鸿蒙os自定义主题,通过鸿蒙自定义属性,来创造一个可以为所欲为的自定义标题组件...
  19. 怎样用计算机中的画笔,Word2010中怎样用画笔绘制表格
  20. ABAP ALV红绿黄灯5步

热门文章

  1. 2015 计蒜之道 初赛 第一场 搜狗输入法的分词算法
  2. 软件工程大作业——设计阶段
  3. 如何在web项目中访问HTML页面
  4. 学计算机电脑厚度23mm,轻薄机身兼具生产力!适合专业人士的轻薄笔记本电脑,了解下?...
  5. python爬虫获取基金数据2
  6. MSTAR数据库结合深度学习(SAR图像目标检测与识别)
  7. 前端开发社区,前端校招面试题及解析大全
  8. ae制作小球轨迹运动_AE教程AE特效:教你如何用AE创建一个弹跳运动的小球特效...
  9. 软件验收测试怎么做?
  10. AI编译器XLA调研