版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35119182/article/details/87976388
下载地址:
wget http://www.valgrind.org/downloads/valgrind-3.14.0.tar.bz2
解压:
tar -jxvf valgrind-3.14.0.tar.bz2
cd valgrind-3.2.3
运行./autogen.sh设置环境(需要标准的autoconf工具)(可选)
./autogen.sh
;配置Valgrind,--prefix= 默认位置在MakeFile文件配置下 /usr/local 自己可以手动修改
./configure
编译Valgrind
Make;
安装Valgrind
make install;
Valgrind包括如下一些工具:
(1) Memcheck ,这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。这也是本文将重点介绍的部分。
(2) Callgrind ,它主要用来检查程序中函数调用过程中出现的问题。
(3) Cachegrind ,它主要用来检查程序中缓存使用出现的问题。
(4) Helgrind ,它主要用来检查多线程程序中出现的竞争问题。
(5) Massif ,它主要用来检查程序中堆栈使用中出现的问题。
(6) Extension ,可以利用core提供的功能,自己编写特定的内存调试工具。
案例:
准备一个.c 程序
g++ -o test nagleTest.c
运行
valgrind --tool=memcheck --leak-check=full --undef-value-errors=yes --track-fds=yes ./a.out
下标越界测试-和socket 套接字未关闭---经测试栈空间数组越界无法测出
数组越界错误
7 int *arr=(int*)malloc(12);
8 printf("%d\n ",arr[14]);
9 free(arr);
堆空间未释放
参考:https://blog.csdn.net/u011673143/article/details/41781217