c/c++开发,内存泄漏检测检测工具Valgrind
创始人
2025-06-01 11:48:56
0

运行时诊断工具Valgrind,自动化代码分析的强力帮手

目录

一、Valgrind介绍

二、Valgrind源码编译及安装

 三、Valgrind工具的使用


一、Valgrind介绍

        Valgrind是用于内存调试、内存泄漏检测以及性能分析的软件开发工具。它可以监视 一个指定程序的活动并通知你在你的代码中可能存在的各种各样的内存管理问题。它类似于老式的 Electric Fence 工具(该工具将标准的内存分配函数替换为自己的函数以提高诊断能力),但被认为更容易使用并且在多个方面都提供了更丰富的功能 ,而且现在大多数主流 Linux 发行版都提供了该工具,所以在你的系统中使用它不需要花费太多时间,你只需安装它的软件包即可。

        目前Valgrind支持以下的平台:

  • x86/Linux: 达到并包括SSSE3,但不高--没有SSE4,AVX,AVX2。
  • AMD64/Linux: 达到并包括AVX2。
  • PPC32/Linux,PPC64/Linux,PPC64LE/Linux: 达到并包括Power8.。
  • S390X/Linux 的支持。
  • ARM/Linux 的支持,从ARMv7。
  • ARM64/Linux: 支持ARMv8。
  • MIPS32/Linux,MIPS64/Linux 的支持。
  • X86/FreeBSD,AMD64/FreeBSD :支持,从FreeBSD11.3。
  • X86/Solaris、AMD64/Solaris、X86/illumos、AMD64/illumos :支持,从Solaris11.
  • X86/达尔文(10.5至10.13)、AMD64/达尔文(10.5至10.13): 支持。
  • ARM/安卓,ARM64(/安卓,MIPS32/安卓,X86/应用 的支持。

        Valgrind编译及运行,需要 kernel 3.0 或更新 ,需要 glibc 2.5.X 或更新支持。在Mac OS X编译运行要求 10.9.x 或更新 。Valgrind工具主要用于自动测试中。 通过使用Valgrind对发现和修复内存泄漏以及其他编程错误的过程进行自动化,Valgrind工具适用于C, C++, Java, Perl, Python, assembly code, Fortran, Ada等编译出来程序,但在C和C++,因为程序 写在这些语言往往具有容易犯内存错误!在你的工具 自动部署、融合、系统或回归测试中使用它帮助很大。

二、Valgrind源码编译及安装

       Valgrind( Valgrind Home)工具是开源软件(GPL 2),给官网提供了产品介绍(进展、开发商支持)、源码(各种版本、分支、补丁)、文档(快速引导、用户手册、帮助、学术报告)、联系(bug提交、商业支持)。

        现在来看看如何安装部署Valgrind工具,进入下载页面(Current Releases:Valgrind: Current Releases),下载源码,本博文时版本是Valgrind 3.20.0。

        完成下载后,进入下载所在目录,将valgrind-3.20.0.tar.bz2拷贝到您支持编译的地方,本文采用的是centos7:

         1)解压缩:

tar -jxvf valgrind-3.20.0.tar.bz2

         2)进入目录,进行安装,其中/opt/valgrind是你想安装的目录:

cd valgrind-3.20.0

         3)编译前配置(--prefix指定安装目录):

./configure --prefix=/opt/valgrind

         4)编译:

make

         5)安装(需要切换到root):

make install

         6)配置环境变量,首先打开~/.bashrc

        gedit ~/.bashrc

        将valgrind安装路径加入path中,本文配置如下:

         保持,并使改变生效:

        source ~/.bashrc

        7)完成安装:valgrind --version

 三、Valgrind工具的使用

        【1】例如现在要监测程序cppcloud_serv是否由内存泄漏,直接运行:

valgrind --leak-check=yes ./cppcloud_serv

         【2】若想把检测结果输入到文件valgrind_report.log中,可以指定输出文件(./cppcloud_serv -i 1 -p 4800为真正的程序运行命令):

valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --run-libc-freeres=yes --log-file=./valgrind_report.log ./cppcloud_serv -i 1 -p 4800

        如果觉得指令过长麻烦,也可以在待检测程序所在目录建立一个文件,例如valg,将将这段长指令输入保存

         然后变更执行权限:chmod 777 valg,就可以运行指令实现检测:./valg

         valgrind 工具会将检测信息出入到指定的日志文件(valgrind_report.log)中,查看日志:cat valgrind_report.log

        【3】如果只想直接在屏幕打印日志检测信息,也可以将写入上面的指令修改为:

valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --run-libc-freeres=yes ./cppcloud_serv -i 1 -p 4800

        保存后运行:./valg,则检测信息直接在屏幕输出

 这里只是抛转引玉,更多关于valgrind的详细说明及运用,请阅读官网的引导手册及用户手册。

相关内容

热门资讯

存储成本暴涨,小米17 Ult... 本文来源:时代周报 作者:谢斯临 图片来源:时代周报记者摄存储疯狂涨价,小米17 Ultra起售价...
2025年公募基金十大新闻来了... 编者按:回望2025,公募基金行业奋楫前行,在时代变革的浪潮中焕发蓬勃生机。历经27载耕耘的公募行业...
日本名古屋丰臣秀吉雕像“被斩首... 12月25日,日本警方称已确认斩断丰臣秀吉雕像头部的嫌犯身份,两名男性涉案。 警方称,涉嫌作案的是爱...
上海人寿百亿处置金到位,浦发系... 出品|达摩财经因偿付能力不足、流动性紧张等问题,2023年,中国太保工作组正式进驻上海人寿,协助风险...
白酒慢下来,谁能站得住? 题图|视觉中国2025年白酒行业的核心关键词,高频聚焦“深度调整”。消费重心正在回归产品本源与价值认...
涉嫌信披违法违规 倍轻松及实控... 中经记者 孙汝祥 夏欣 北京报道倍轻松(688793.SH)12月25日晚间公告,公司及实际控制人马...
比山西还会做“醋”的小城,一年... 如果提到全国最爱吃醋的省份,大家估计都会想到山西。但很少有人知道,真正的首个“中国醋都”,实际上是江...
水井坊:“某酒企拟收购水井坊”... 新京报贝壳财经讯 有消息称剑南春拟收购水井坊。对此,12月25日晚间,四川水井坊股份有限公司发布公告...
偷鸡成功,赚了67.52% 昨天的文章,不是说周二的时候用了500块钱去参与国投白银LOF(161226)的套利吗?当时已经做好...
上市仅40个月,“水果第一股”... 本文自南都·湾财社。 采写 | 南都·湾财社记者 詹丹晴 编辑 | 子衿 图源:企业官网 12月2...