安装
基于源码安装
- 确认Valgrind最新版本
- 下载源码:
wget https://sourceware.org/pub/valgrind/valgrind-3.17.0.tar.bz2
- 解压:
tar xvf valgrind-3.17.0.tar.bz2
cd valgrind-3.17.0
- 配置:
./configure
- 编译:
make install
(可能需要root权限, sudo)
基于安装包安装
Ubuntu环境:sudo apt install valgrind
Quick Start
执行一个最简单的测试:
编写一段有bug的代码:
1 |
|
编译之(注意要编译选项要带上-g),编译出的可执行文件为test。用valgrind来执行test
1 | $ valgrind ./test |
以上Valgrind给出的log中,已明确指示了错误的地方:
- test.c 第6行,访问了一个超出malloc申请范围的地址。
- 检测到一个40 bytes的内测泄漏。通过
valgrind --leak-check=full ./test
查看更详细的信息。
那么,我们就用valgrind --leak-check=full ./test
试试:
1 | ... |
Valgrind检测发现了在test.c第5行malloc的内存,没有被释放。
至此,Valgrind的简单demo就完成了。Valgrind(尤其是MemCheck tool)为C/C++程序员提供了很好的检查内存错误的工具。