1、下载valgrind
valgrind源码下载链接
下载最新的valgrind源码
tar -xvf valgrind-3.18.1.tar.bz2
cd valgrind-3.18.1/
拷贝通过编译脚本到valgrind-3.18.1目录下
脚本内容如下:通用脚本链接地址
2、下载NDK版本
因为是andrioid11,所以一开始就使用的最新的稳定NDK-23版本,但无法找到libgcc.a库,造成编译不过,通过验证其它版本的都可以编译过,应该是23版本有什么特殊情况吧,暂没进一步关注。
NDK-17旧版本下载地址
将android-ndk-r17c-linux-x86_64.zip拷贝到valgrind-3.18.1目录下的ndk目录
unzip android-ndk-r17c-linux-x86_64.zip
3、编译valgrind
cd /home/zeng/share/valgrind/valgrind-3.18.1
./run.sh x86 /home/zeng/share/valgrind/valgrind-3.18.1/ndk
ls /home/zeng/share/valgrind/valgrind-3.18.1/build/bin/
不出意外,build/bin目录下会有valgrind可执行文件,将该文件拷贝至安卓系统进行排查内存泄漏问题;
4、运行valgrind
从上面的内容了解,valgrind安装目录为/home/zeng/share/valgrind/valgrind-3.18.1/build
1)指定ALGRIND_LIB路径,网上搜索普通大家指定的都是valgring安装目录bunild,但我在模拟器中运行时并不正常,没有办法根据错误查看了源码,找到正常的路径为bunild/libexec/valgrind目录
将build导入模拟器
adb push build /system/
chmod 777 /system/build -R
export VALGRIND_LIB=/system/build/libexec/valgrind
/system/build/bin/valgrind
显示基本正常
指定后能初步正常执行valgrind;
2)添加内存泄漏参数
/system/build/bin/valgrind --log-file=valgrind.log --tool=memcheck --leak-check=full --show-leak-kinds=all /vendor/bin/yuerin
我是在模拟器下面,执行上面的参数会段错误,原因还不知道,等后面正式上板调试后,再修改吧,上面的内容大体应该问题不大