Valgrind

一、概述
Valgrind 提供调试和分析错误的工具包

    memcheck ------> 这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。

    callgrind ------> 它主要用来检查程序中函数调用过程中出现的问题。

    cachegrind ------> 它主要用来检查程序中缓存使用出现的问题。

    helgrind ------> 它主要用来检查多线程程序中出现的竞争问题。

    massif ------> 它主要用来检查程序中堆栈使用中出现的问题。

    extension ------> 可以利用core提供的功能,自己编写特定的内存调试工具

二、使用的功能 memcheck
三、安装与调试

  1. 安装
    http://valgrind.org/downloads/current.html#current
    sudo tar jxvf valgrind-3.14.0.tar.bz2
    sudo cd valgrind-3.14.0
    sudo ./autogen.sh
    ./configure --prefix=/home/你期望的目录/bin
    make&make install
  2. 验证
    /home/xxx/bin/bin/valgrind --tool=memcheck --leak-check=full --track-origins=yes
    注意,程序要关闭daemod 启动但进程

四、报错查看
1 Invalid write of size 非法写
2 SUMMARY
in use at exit : 40 bytes in 1 blocks
total heap usage: 1 allocs, 0 frees ,40 bytes allocated 使用越界
3 definitely lost: 40 bytes in 1 blocks 内存泄漏
indirectly lost: 0 bytes in 0 blocks
prossibly lost: 0 bytes in 0 blocks
still reachable: 0 bytes in 0 blocks
suppressed: 0 bytes in 0 blocks
4 Conditional jump or move depends on unintialised value(s) 未初始化

object doesn't have a symbol table

1)使用未初始化的内存

2)读/写已经被释放的内存

3)读/写内存越界

4)读/写不恰当的内存栈空间

5)内存泄漏

6)使用malloc/new/new[]和free/delete/delete[]不匹配。

你可能感兴趣的:(Valgrind)