Android11 编译valgrind-3.18.1

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

我是在模拟器下面,执行上面的参数会段错误,原因还不知道,等后面正式上板调试后,再修改吧,上面的内容大体应该问题不大


版权声明:本文为weixin_42929891原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。