现在的位置: 首页 > 综合 > 正文

Valgrind学习笔记

2013年02月02日 ⁄ 综合 ⁄ 共 999字 ⁄ 字号 评论关闭

 

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

抱歉!评论已关闭.