Valgrind是一款用于内存调试、内存泄漏检测以及性能分析、检测线程错误的软件开发工具。
Valgrind 是运行在Linux 上的多用途代码剖析和内存调试软件。主要包括Memcheck、Callgrind、Cachegrind 等工具,每个工具都能完成一项任务调试、检测或分析。可以检测内存泄露、线程违例和Cache 的使用等。
Valgrind 基于仿真方式对程序进行调试,它先于应用程序获取实际处理器的控制权,并在实际处理器的基础上仿真一个虚拟处理器,并使应用程序运行于这个虚拟处理器之上,从而对应用程序的运行进行监视。应用程序并不知道该处理器是虚拟的还是实际的,已经编译成二进制代码的应用程序并不用重新进行编译,Valgrind 直接解释二进制代码使得应用程序基于它运行,从而能够检查内存操作时可能出现的错误。
所以在Valgrind下运行的程序运行速度要慢得多,而且使用的内存要多得多 - 例如,Memcheck工具下的程序是正常情况的两倍多。因此,最好在性能好的机器上使用Valgrind。
- 从Valgrind官网下载源代码文件,目前使用的是
valgrind 3.19.0 (tar.bz2)https://sourceware.org/pub/valgrind/valgrind-3.19.0.tar.bz2
- 解压源代码压缩包: tar -zxvf valgrind-3.19.0.tar.bz2
- 进入解压的文件夹: cd valgrind-3.19.0
- 使用configure进行配置:
--host=运行环境
--prefix=用于设置自定义的安装路径
./configure --prefix=~/valgrind-target/
--host=aarch64-linux
CC=/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
CXX=/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
- 编译
sudo make
- 安装
sudo make install
- 进入安装路径
cd ~/valgrind-target/libexec/valgrind
- 拷贝目录下所有"*arm*"和default.supp文件到一个文件夹
- 烧录该文件夹到核心板root根目录下
- 打开/etc/profile
vi /etc/profile
- 在文件最下方添加环境变量
export VALGRIND_LIB=/root/valgrind
- 命令行拷贝文件夹中的valgrind可执行文件到/usr/bin
cp /root/valgrind/valgrind /usr/bin/.
- 命令行使用valgrind检测程序test的内存泄漏情况
valgrind ./test