一 概述
valgrind是一款非常好用的工具,用于检测内存泄漏等,这里讲述如何将其交叉编译到arm开发板及如何使用
【C/C++ 集成内存调试、内存泄漏检测和性能分析的工具 Valgrind 】Linux 下 Valgrind 工具的全面使用指南 - 知乎 (zhihu.com)
valgrind: failed to start tool ‘memcheck‘ for platform ‘arm-linux‘: No such file or directory_valgrind: failed to start tool 'memcheck' for plat-CSDN博客
二 编译方法
首先下载valgrind,亲测最新的3.23.0编译不了,因此选择了旧版本3.20.0,地址如下
2.1 解压缩
tar -xvf ./valgrind-3.20.0.tar.bz2
2.2 编译
./configure --host=armv7-linux CC=arm-linux-gnueabihf-gcc --prefix=/home/bush/Tools/valgrind-3.20.0/install make -j 4 make install
稍微等待一会儿就编译好了,这个过程相对来说还是很顺利的,文件夹包含以下内容
三 使用方法
将编译出来的valgrind文件夹,就是以上看到的这些,拷贝到arm板子上面去,例如放到root文件夹,注意,待测试的应用程序必须是DEBUG模式
使用命令执行
/root/valgrind/bin/valgrind --tool=memcheck --leak-check=yes /root/test_app
此时一般会报错
需要执行命令,将memcheck路径包含过来
export VALGRIND_LIB=/root/valgrind/libexec/valgrind/
再次运行,可以发现程序运行了,但是随后就又报错了
这个问题可能有人遇到,有人没有遇到,我这里的问题是,板子上 /lib 文件夹里面的 ld-linux-armhf.so.3 文件是stripped的,那无法用于调试,要替换为no-stripped的才可以,替换之后就顺利运行了,至于如何查看信息分析报告,可以参考上面列举的参考文档。