下载 valgrind-3.15.0.tar.bz2
安装
sudo apt-get install automake
tar jxf valgrind-3.15.0.tar.bz2
cd valgrind-3.15.0
./autogen.sh
./configure
make
sudo make install
使用
1、检查是否有内存泄露
gcc 3_12.c
valgrind ./a.out
下图显示 [ 没有error,warning,但是却发生了内存泄露 ] ,因此,需要进行手动释放 malloc 开辟的空间。
2、开始调试
1)首先,打开一个终端,添加调试信息
gcc -g 3_12.c
valgrind --vgdb=yes --vgdb-error=0 ./a.out
2)然后,新建一个终端(Terminal),开始调试。
【前一个终端不要关闭,从现在开始始终在这个终端里 [ 输入命令 ] ,从前一个终端中 [ 观察输出 ] 。】
gdb ./a.out
(gdb) target remote | vgdb
调试步骤:
- 使用
b
命令在可能发生内存泄露行的附近设置一个断点 - 输入
continue
令程序执行到断点处(注意:不是gdb中的r
命令) - 输入
s
或n
进行单步调试,观察输出结果
⌈ 或者 ⌋ 不进行单步调试,直接输出堆栈信息:
valgrind ./a.out --leak-check=full
最后,
经过调试,显示正常了 13 allocs 13 frees 。