使用 valgrind 进行内存泄露检测
一、情景
当你的服务器内存占用爆炸,top发现是开发的某二进制进程导致的。你说他还不承认,说是你服务器性能没优化好。不说了,来给他的程序分析一遍吧!
二、安装
valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。在安装valgrind之前,要先安装autoconf和automake。您可以使用命令autoconf --version和automake --version检查这两个工具是否有安装。
- 下载最新的安装包
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
四、查看报告
- 内存泄露的两种情况
- Possibly lost: 可能的内存泄露(是指仍然存在某个指针能够访问某块内存,但该指针指向的已经不是该内存首地址。)
- Definitely lost: 确定的内存泄露(已经不能够访问这块内存)
2.报告结尾处给出了总结:

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


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

浙公网安备 33010602011771号