设为首页 加入收藏

TOP

valgrind内存检测工具安装(一)
2023-07-23 13:36:44 】 浏览:59
Tags:valgrind 安装

参考:https://blog.csdn.net/xiaoxiaofeng001/article/details/88675841

简单介绍

  • Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。
  • Valgrind这个名字取自北欧神话中英灵殿的入口。
  • Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Google-O'Reilly开源代码奖。
  • Valgrind遵守GNU通用公共许可证条款,是一款自由软件。
  • 到3.3.0版本为止,Valgrind支持x86、x86-64以及PowerPC上的Linux。除此之外,还有一些其它非正式支持的类Unix平台(如FreeBSD、NetBSD以及Mac OS X)。

个人使用的原因

在公司开发好一个程序(linux系统下的qt程序)后,进入测试阶段,发现在运行过程中,内存泄露情况及其严重,通过检查逐句检查代码(new、free、malloc、delete、析构、while循环等地方),修改了一大部分后,再次测试发现内存泄露还是存在,于是看到QT软件有一个Valgrind内存泄露检测工具,进而尝试去使用工具协助检测。
image

但是终端报警告:

valgrind --child-silent-after-fork=yes --xml-socket=127.0.0.1:45500 --log-socket=127.0.0.1:39589 --xml=yes --smc-check=stack --tool=memcheck --gen-suppressions=all --track-origins=yes --leak-check=summary --num-callers=25 
Failed to start program.Path or permissions wrong?
Analyzing finished.

具体原因:Valgrind工具没有安装。

安装Valgrind

  1. 命令安装
sudo apt-get install valgrind

但是本人在命令安装时报错:

you want to continue? [Y/n] y
Err:1 http://mirrors.ustc.edu.cn/debian stable/main arm64 libc6-dbg arm64 2.28-10
  404  Not Found [IP: 202.141.160.110 80]
E: Failed to fetch http://mirrors.ustc.edu.cn/debian/pool/main/g/glibc/libc6-dbg_2.28-10_arm64.deb  404  Not Found [IP: 202.141.160.110 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

估计时软件源的问题,但是我使用的系统不能轻易更换软件源,所以使用另外一种方法。

  1. 在windows系统下载好安装包后
    (下载地址:https://valgrind.org/downloads/current.html) ,发送到linux系统进行安装操作。
    image
  • 上面应用发送到linux系统指定目录下后,解压,得到valgrind-3.20.0文件夹,里面包含一些.sh配置文件:
tar -xvf valgrind-3.20.0.tar
  • 进入valgrind-3.20.0目录,运行以下命令:
./autogen.sh (在对应的目录下执行命令)
./configure --prefix=/usr/local/valgrind    (此处为“ 配置 ”操作,--prefix后面为自己指定的配置路径)
make -j8           (此处为“ 编译 ”操作,消耗很多时间,可以添加-j8,使用多核CPU的8个核心来编译,速度会变快)
make install    (此处为“ 安装 ”操作)
make install-recursive
  • 把valgrind的bin目录路径添加到环境变量PATH中,打开~.bashrc(或者/etc/profile)文件,在最后一行加入
PATH=${PATH}:/usr/local/valgrind/bin
  • 执行如下命令:
cd ~    (隐藏文件.bashrc在家目录~)
vi .bashrc   

(或者 vi /etc/profile)
  • 然后在最后一行加入上述环境变量,如下图所示:
    image

  • 刷新一下配置文件:source /etc/profile 或者 source .bashrc。执行valgrind --version终端会打印版本信息,说明安装成功。
    image

遇到问题

  1. 在执行./autogen.sh命令时遇到报错:
aclocal: command not found error while running aclocal.
  • 说明丢失的aclocal,而aclocal是automake包一部分,automake包依赖aclocal,因此需要安装automake。如果linux的yum源正常的话可以使用命令:
sudo apt-get install automake
  • 如果yum源没法用或者没联网的话,可以采用离线挂载的方式进行安装,首先把redhat系统的iso文件,放到 / 目录下,然后执行如下命令:
mount –o loop /RHEL_6.4\ X86_64.iso
yum –y install automake

注意如果虚拟机内存过小的话,安装会失败。
2. 执行./autogen.sh命令时提示系统中已有的automake版本较低,需要更新automake版本。
我把automake.1.11版本上传到了个人工作区间,然后根据下面这片博客进行安装即可。
https://blog.csdn.net/qq_30549833/article/details/72955881
这个网址是Valgrind的使用说明文档:
http://www.valgrind.org/docs/manual/ms-manual.html
这篇博客也有介绍:
https://www.cnblogs.com/skyfsm/p/8823170.html
3. 执行过程中,终端会出现很多 make[1]: Leaving directory '/usr/local/xxxxx' 提示,不用管,继续make install。

make[1]: Leaving directory `/usr/local/nginx-1.12.1;

然后:

  • 我只需要去看/usr/local下面是否有valgrind文件夹?
  • 如果已经有valgrind文件夹?我们再去看valgrind是否可以正常使用?
  • 如果执行valgrind --version ,或者./valgrind都有提示,则说明安装成功。



题外总结

《./configure –prefix 命令用法》

在Linux上编译安装软件时,经常遇到./configure –prefix=usr 这个命令。./configure –prefix是什么意思呢?下面简单介绍一下./configure –prefix 的用法。
源码的安装一般由有这三个步骤:配置(conf

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇我的第一篇随笔 下一篇C++11:tuple元组

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目