Valgrind安装及Memcheck学习

学习记录Valgrind,内容参考自《后台开发》及以下博客:
http://blog.chinaunix.net/uid-23629988-id-3033741.html
这篇文章中使用的选项track-fds能够检测文件描述符问题
https://blog.csdn.net/miss_acha/article/details/19839715
https://www.cnblogs.com/wangkangluo1/archive/2011/07/20/2111248.html
https://blog.csdn.net/shixin_0125/article/details/78590796
这篇博客使用了debug.sh和makefile,可以借鉴下
https://blog.csdn.net/yanghao23/article/details/7514587
这篇文章的描述不错,可以参考

一、Valgrind安装

若使用之前较老版本,在configure时会出现错误。

error: please use gcc >= 3.0 or clang >= 2.9 or icc >= 13.0

因此,先去官网http://valgrind.org/downloads/current.html#current,选择最新版本的链接地址,在Linux环境下执行以下命令:

wget ftp://sourceware.org/pub/valgrind/valgrind-3.13.0.tar.bz2
#解压
tax xvf valgrind-3.13.0.tar.bz2 
#进入文件夹
cd valgrind-3.13.0
#指定安装路径,生成Makefile
./configure --prefix=/home/pp/software/valgrind
#读取指令,编译
make
#安装到指定位置
make install

二、Valgrind概念

valgrind通常用来成分析程序性能及程序中的内存泄露错误

  • Valgrind工具集简绍
    Valgrind包含下列工具:
    1、memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。
    2、callgrind:检测程序代码的运行时间和调用过程,以及分析程序性能。
    3、cachegrind:分析CPU的cache命中率、丢失率,用于进行代码优化。
    4、helgrind:用于检查多线程程序的竞态条件。
    5、massif:堆栈分析器,指示程序中使用了多少堆内存等信息。
    6、lackey:
    7、nulgrind:
    这几个工具的使用是通过命令:valgrand –tool=name 程序名来分别调用的,当不指定tool参数时默认是 –tool=memcheck
  • 二Valgrind工具详解
    这里仅仅学习最常用的工具Memcheck,用来检测程序中出现的内存问题,所有对内存的读写都会被检测到,一切对malloc、free、new、delete的调用都会被捕获。所以,它能检测以下问题:
    1、对未初始化内存的使用;
    2、读/写释放后的内存块;
    3、读/写超出malloc分配的内存块;
    4、读/写不适当的栈中内存块;
    5、内存泄漏,指向一块内存的指针永远丢失;
    6、不正确的malloc/free或new/delete匹配;
    7、memcpy()相关函数中的dst和src指针重叠。
    这些问题往往是C/C++程序员最头疼的问题,Memcheck能在这里帮上大忙。
gcc memleak.c -g -o memleak
./memleak
/home/pp/software/valgrind/bin/valgrind  --track-fds=yes --leak-check=full  ./memleak

猜你喜欢

转载自blog.csdn.net/u013457167/article/details/80150413