Valgrind是用于构建动态分析工具的仪器框架。 它附带了一组工具,每个工具都执行某种调试,分析或类似任务,可帮助您改进程序。
Valgrind的架构采用模块化设计,因此可以轻松创建新工具,而不会干扰现有结构。
开始工作前,有两项信息不得不看,那就是平台和工具概述,虽然百度查了一些,但毕竟不如官方的准确:
平台支持,我的 ARM-v7 是支持的
http://valgrind.org/info/platforms.html
工具概述:
http://valgrind.org/info/tools.html
标准配置提供了许多有用的工具。
-
Memcheck是一个内存错误检测器。 它可以帮助您使程序,尤其是那些用C和C ++编写的程序更加正确。
-
Cachegrind是缓存和分支预测分析器。 它可以帮助您使程序运行得更快。
-
Callgrind是一个生成缓存分析器的调用图。 它与Cachegrind有一些重叠,但也收集了Cachegrind没有的一些信息。
-
Helgrind是一个线程错误检测器。 它可以帮助您使多线程程序更正确。
-
DRD也是线程错误检测器。 它与Helgrind类似,但使用不同的分析技术,因此可能会发现不同的问题。
-
Massif是一个堆分析器。 它可以帮助您使程序使用更少的内存。
-
DHAT是一种不同类型的堆分析器。 它可以帮助您了解块寿命,块利用率和布局效率低下的问题。
-
SGcheck是一种实验工具,可以检测堆栈和全局数组的溢出。 它的功能与Memcheck的功能互补:SGcheck发现Memcheck无法解决的问题,反之亦然。
-
BBV是一个实验性的SimPoint基本块矢量生成器。 它对进行计算机体系结构研究和开发的人很有用。
其中官方解释到:
Memcheck检测内存管理问题,主要针对C和C ++程序。Memcheck运行程序比正常情况慢大约10-30倍
Cachegrind运行程序比正常情况慢大约20-100倍。
Massif运行程序比正常情况慢20倍
1.下载源码
http://valgrind.org/
2 解压后进行配置:
./configure --prefix=/home/sun/share/install --host=arm-buildroot-linux-uclibcgnueabi
配置报错:
checking for a supported CPU... no (arm) configure: error: Unsupported host architecture. Sorry
查看官方网站首页,发现对 ARM-LINUX 是支持的
It also includes three experimental tools: a stack/global array overrun detector, a second heap profiler that examines how heap blocks are used, and a SimPoint basic block vector generator. It runs on the following platforms: X86/Linux, AMD64/Linux, ARM/Linux, ARM64/Linux, PPC32/Linux, PPC64/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, MIPS64/Linux, X86/Solaris, AMD64/Solaris, ARM/Android (2.3.x and later), ARM64/Android, X86/Android (4.0 and later), MIPS32/Android, X86/Darwin and AMD64/Darwin (Mac OS X 10.12).
修改 configure 文件:
将 armv7a* 改为 arm* 再次配置就不会报错了
修改前:
修改后:
3.编译
make -j4
make install
会生成四个目录:bin lib share include
4.我的板子空间非常小,所以需要删除不需要的工具,只留下内存检查工具,
需要删除 lib/