一. valgrind 工具介绍
valgrind 工具是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。valgrind 工具 是一套 Linux 下,开放源代码的动态调试工具集合。
valgrind 由内核(core)以及基于内核的其他调试工具组成。它包括一个工具集。内核类似于一个框架(framework),它模拟了一个 CPU 环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。
二. valgrind 工具集
valgrind 工具中常用的工具包括如下:
1. Memcheck 工具:检测内存泄露,内存越界,非法指针等等问题。
一切对malloc() / free() 或 new / delete 的调用都会被捕获。
2. Callgrind 工具:检测代码的运行时间和调用过程,以及分析程序性能。
Callgrind 收集程序运行时的一些数据,建立函数调用关系图,还可以有选择地进行 cache 模拟。在运行结束时,它会把分析数据写入一个文件。
3. Cachegrind 工具:分析 CPU 的 cache 命中率、丢失率,用于进行代码优化。
Cachegrind 工具可以模拟 CPU 中的一级缓存和二级缓存,能够精确地指出程序中 cache 的丢失和命中。
4. Helgrind 工具:用于检查多线程程序中出现的的竞争问题。
Helgrind 工具寻找内存中被多个线程访问,而又没有一贯加锁的区域,这些区域往往是线程之间失去同步的地方,而且会导致难以发现的错误。
5. Massif 工具:堆栈分析器,主要用来检查程序中堆栈使用中出现的问题。
它能测量程序在堆栈中使用了多少内存,可以看到堆块,堆管理块和栈的大小。
三. valgrind 安装与使用
1. valgrind 工具安装
首先,将下载下来的安装包 valgrind-3.20.0.tar.bz2 放在 ubuntu 系统中。
其次,解压安装包。进入解压后的文件目录下,输入 命令。
valgrind支持多个平台,根据当前主机配置valgrind 工具。当需要编译在嵌入式设备上使用其他编译器版本的 valgrind 工具时,则需要输入其他配置参数,例如,输入命令:
./configure --host=arm-ca9-linux-gnueabihf CC=arm-ca9-linux-gnueabihf-gcc --prefix=/mnt/valgrind
最后,输入 make 命令进行编译。之后输入 make install 命令进行安装。
./configure之后就有 makefile文件出现,接下来进行 make 编译,安装。
可以输入 valgrind --version 命令查看是否安装成功。如下所示:
可以看到,系统中 valgrind 工具已经安装成功。
2. valgrind 工具使用
valgrind 工具可以直接工作于可执行文件上,因此,在检查前不需要重新编译、连接和修改你的程序。要检查一个程序很简单, valgrind 工具集中,这些工具使用是一样的,只需要执行下面的命令:
valgrind --tool=tool_name 程序名
下一篇,具体说明一下 valgrind 工具的使用。