Valgrind介绍
Valgrind是一个程序动态分析的工具。它的工具集可以自动地检测到内存管理和线程的错误并且能够深入分析程序行为。Valgrind目前包括六个工具:一个内存错误检测器、两个线程错误检测器、一个缓存和分支预测分析器、一个调用图分析器和一个堆栈分析器。它目前支持的平台:X86/Linux、AMD64/Linux、PPC32/Linux、PPC6/Linux和X86/Darwin(Max OS X)。Valgrind是开源的并且可以在GNU GPL version2下免费使用。
Valgrind工具集
Memcheck
Memcheck能够检测内存管理问题,最初主要针对C/C++程序。程序在Memcheck选项下运行,所有的读写操作都被检查并且malloc/new/free/delete也都可以检查。所以,如果程序存在以下行为都可以被检查出:
1、越界访问
2、使用未初始化数据
3、内存泄露
4、不正确使用堆
5、调用memcpy()和相关函数时,源、目的内存块有重叠
Memcheck选项运行程序会慢10-30X。
Cachegrind
Cachegrind是一个缓冲分析器。它细节模拟I1、D1和L2缓存行为并且能够准确代码中缓冲缺失。一般会慢20-100X。
Callgrind
Callgrind扩展了Cachegrind。它提供了Cachegrind所有信息,并且可以生成调用图。可以使用KCachegrind可视化工具帮助查看结果。
Massif
Massif是一个堆栈分析器。
Helgrind
Helgrind是一个多线程程序中的线程调试器。
Other Tools
Lackey, Nulgrind
Valgrind下载
sudo apt-get install valgrind
sudo apt-get install kcachegrind
Valgrind使用之Callgrind
1、编写test.c并且gcc test.c -o test -g
2、valgrind tool=callgrind test 生成callgrind.out.8196
3、kcachegrind callgrind.out.8196 启动图形界面
参考Valgrind官方主页 http://valgrind.org/
Valgrind使用简易说明 http://wansishuang.javaeye.com/blog/430709