参考:Valgrind memcheck介绍以及在海思himix410平台的安装使用_baiyu33的博客-CSDN博客
一.valgrind下载
本文使用的版本是3.19.0(2022年10月25日下载)
源码地址:https://www.linuxfromscratch.org/blfs/view/svn/general/valgrind.html
或者https://download.csdn.net/download/bingbaobei/86824348下载
二.编译安装
把源码压缩包放到编译服务器上
1.解压下载下来的源码
tar -xvf valgrind-3.19.0.tar.bz2
cd valgrind-3.19.0 进入valgrind-3.19.0目录下
2.生成configure文件(略,因为直接可以看到configure文件,我略过了这个步骤)
sudo ./autogen.sh(略)
3.配置交叉编译环境环境变量
我要排查的是hisi3536,使用的工具链为arm-hisiv400-linux-的,所以配置configure如下
export CC=/opt/hisi-linux/x86-arm/arm-hisiv400-linux/bin/arm-hisiv400-linux-gnueabi-gcc
export CXX=/opt/hisi-linux/x86-arm/arm-hisiv400-linux/bin/arm-hisiv400-linux-gnueabi-g++
export CPP=/opt/hisi-linux/x86-arm/arm-hisiv400-linux/bin/arm-hisiv400-linux-gnueabi-cpp
export AR=/opt/hisi-linux/x86-arm/arm-hisiv400-linux/bin/arm-hisiv400-linux-gnueabi-ar
export LD=/opt/hisi-linux/x86-arm/arm-hisiv400-linux/bin/arm-hisiv400-linux-gnueabi-ld
export DEVBOARD_VALGRIND_DIR=/tmp/mxyvalgrind
export HOST_INSTALL_DIR=/tmp/mxyvalgrind
4.修改configure(此步不可跳过,否则会出现错误重新来)
修改 configure
文件: hisiv400是 armv7l 架构,可通过连接开发板后输入 uname -m
获知. 在 configure
文件里找到 armv7*)
改为 armv7*|arm)
.
5执行编译
./configure --prefix=$DEVBOARD_VALGRIND_DIR --target=arm-hisiv400-linux --host=arm-hisiv400-linux --program-prefix=hisi-
make
make install
6.拷贝
挂载到对应的hisi平台,把/tmp/mxyvalgrind 拷贝到开发板的/tmp目录(此处注意目录对应一样,否则会出现错误重新来)
7.执行
/tmp/mxyvalgrind/bin/hisi-valgrind --tool=memcheck --leak-check=full --track-origins=yes --show-reachable=yes --log-file=memchk.log ./bin/XXX.out
大功告成
三 常见错误
1.configure: error: Unsupported host architecture. Sorry
解决方案:修改 configure
文件: himix410 是 armv7l 架构,可通过连接开发板后输入 uname -m
获知. 在 configure
文件里找到 armv7*)
改为 armv7*|arm)
.
2.valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory
--prefix 后面的安装目录要和开发板平台目录一致(标红的地方,着重一下)
3../bin/XXX.out error while loading shared libraries: xxx.so: cannot open shared object file: No such file or directory
find / -name xxx.so 找到应用程序依赖的库路径,LD_LIBRARY_PATH=xxx:$LD_LIBRARY_PATH添加到LD_LIBRARY_PATH中即可