一、概述
Valgrind 提供调试和分析错误的工具包
memcheck ------> 这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。
callgrind ------> 它主要用来检查程序中函数调用过程中出现的问题。
cachegrind ------> 它主要用来检查程序中缓存使用出现的问题。
helgrind ------> 它主要用来检查多线程程序中出现的竞争问题。
massif ------> 它主要用来检查程序中堆栈使用中出现的问题。
extension ------> 可以利用core提供的功能,自己编写特定的内存调试工具
二、使用的功能 memcheck
三、安装与调试
- 安装
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 - 验证
/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[]不匹配。