Ubuntu20.04安装valgrind_ubuntu安装valgrind-CSDN博客
交叉编译valgrind(9x07)_valgrind交叉编译-CSDN博客
【C/C++ 集成内存调试、内存泄漏检测和性能分析的工具 Valgrind 】Linux 下 Valgrind 工具的全面使用指南 - 知乎
sudo apt-get install automake
sudo apt-get install autoconf
cd valgrind-3.19.0
./autogen.sh
./configure
make -j4
sudo make install
# 配置编译环境
arm-oe-linux-gnueabi
arm-oe-linux-gnueabi-gcc
./configure --host=arm-oe-linux-gnueabi CC=arm-oe-linux-gnueabi-gcc CPP=arm-oe-linux-gnueabi-cpp CXX=arm-oe-linux-gnueabi-g++ AR=arm-oe-linux-gnueabi-ar LD=arm-oe-linux-gnueabi-ld --prefix=$PWD/valgrind
make -j4
# install也可以指定目录 make -j4 install DESTDIR=`pwd`/valgrind
make -j4 install
会在 --prefix 指定的目录下生成四个子目录:bin、include、lib、libexec 和 share,我们需要的 valgrind 工具就在其中的bin目录下。
# 然后配置环境变量,本次有效,方便直接使用命令
export PATH="$PATH:/root/valgrind_xx/bin"
# 配置工具库变量
export VALGRIND_LIB="/root/valgrind_xx/lib"
./valgrind --version
3.1 拷贝到设备并设置环境变量
动态库在valgrind/libexec/valgrind里面,所以把valgrind/libexec/valgrind中所有文件拷贝到valgrind/lib,可以把不用的删掉,比如静态库之类的,然后打包bin和lib并推送到设备就行了。
# 先拷贝到/mnt/sdidk/valgrind目录下,目录自己定
tar -czvf valgrind.tar.gz valgrind/bin/* valgrind/lib/*
adb push valgrind.tar.gz /mnt/sdisk/valgrind
cd /mnt/sdisk/valgrind && tar -zxvf valgrind.tar.gz
# 然后配置环境变量,本次有效,方便直接使用命令
export PATH="$PATH:/mnt/sdisk/valgrind/bin"
# 配置工具库变量
export VALGRIND_LIB="/mnt/sdisk/valgrind/lib/valgrind"
3.2 执行
可输入以下指令测试 valgrind 是否可以正常运行,如果出现一大堆选项解释,则表示成功
valgrind --version
valgrind-3.20.0
通过检查内存泄漏的问题使用(./sample为可执行程序名,为了使valgrind发现的错误更精确,建议在编译时加上-g参数,编译优化选项请选择O0):
valgrind -v --error-limit=no --leak-check=full --tool=memcheck ./sample
nohup valgrind -v --error-limit=no --leak-check=full --tool=memcheck ./xxxx >/xxx.log 2>&1 &