使用 valgrind 进行内存泄露检测

一、情景

  当你的服务器内存占用爆炸,top发现是开发的某二进制进程导致的。你说他还不承认,说是你服务器性能没优化好。不说了,来给他的程序分析一遍吧!

二、安装

    valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。在安装valgrind之前,要先安装autoconf和automake。您可以使用命令autoconf --version和automake --version检查这两个工具是否有安装。

  1. 下载最新的安装包

    http://valgrind.org/downloads/current.html

    或者是输入命令:

    wget http://valgrind.org/downloads/valgrind-3.10.1.tar.bz2

  2. 解压缩安装包,输入命令:

    tar -jxvf valgrind-3.10.1.tar.bz2

  3. 进入解压缩后生成的目录valgrind-3.10.1,输入命令:

    cd valgrind-3.10.1

  4. 运行./autogen.sh设置环境,输入命令:

    ./autogen.sh

    如果你碰到如下错误:aclocal: command not found

    则表示你需要安装autoconf和automake两个工具,请先查看“安装autoconf“和”安装automake“两个步骤。

  6. 运行configure文件,生成Makefile。

  7. 编译并安装valgrind,输入命令:

    make;make install

  8. 检查安装是否成功:

    valgrind --version

 

三、执行调用应用程序

valgrind --leak-check=full --show-reachable=yes --trace-children=yes ./XXXXXX  > /tmp/valgrind.log

 四、查看报告

  1. 内存泄露的两种情况
    1. Possibly lost: 可能的内存泄露(是指仍然存在某个指针能够访问某块内存,但该指针指向的已经不是该内存首地址。)
    2. Definitely lost: 确定的内存泄露(已经不能够访问这块内存)

  2.报告结尾处给出了总结:

 

 

 

 

  3.文件内搜索:definitely lost in 或者 possibly lost in 可快速定位

 

 

 

五、 好了,把这些截图直接丢给开发装B去吧!

 

posted @ 2021-12-02 14:51  运维之王  阅读(174)  评论(0)    收藏  举报