You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android框架下用Valgrind检测.so文件遇链接错误,如何解决?

Android下Valgrind检测/vendor二进制文件的链接错误解决方法

错误信息翻译

==11442== Memcheck,内存错误检测器
==11442== 版权所有 (C) 2002-2024,遵循GNU GPL协议,由Julian Seward等人开发
==11442== 使用Valgrind-3.23.0和LibVEX;重新运行时加-h参数可查看版权信息
==11442== 命令:/vendor/bin/BINARYFILE
==11442== 无法链接可执行文件"/vendor/bin/BINARYFILE":"/vendor/bin/BINARYFILE"所需或动态打开的库"/data/valgrind/libexec/valgrind/vgpreload_core-amd64-linux.so"对命名空间"(default)"不可访问
==11442==
==11442== 堆内存摘要:
==11442==     退出时仍在使用:0字节,0块
==11442==   堆内存总使用情况:0次分配,0次释放,0字节已分配
==11442==
==11442== 所有堆块均已释放——无内存泄漏可能
==11442==
==11442== 如需查看检测到的错误和已抑制错误的列表,请使用-s参数重新运行
==11442== 错误摘要:0个上下文产生0个错误(已抑制:0个来自0个)

问题根源

/vendor目录下的二进制默认运行在受限的SELinux上下文和命名空间中,无法直接访问/data目录下的Valgrind预加载库,导致链接失败。

解决方法

1. 复制Valgrind库到/vendor目录

把Valgrind的预加载库移到/vendor下,让目标二进制能正常访问:

# 创建对应目录
mkdir -p /vendor/libexec/valgrind/
# 复制所需的预加载库
cp /data/valgrind/libexec/valgrind/vgpreload_core-amd64-linux.so /vendor/libexec/valgrind/
cp /data/valgrind/libexec/valgrind/vgpreload_memcheck-amd64-linux.so /vendor/libexec/valgrind/
# 设置正确权限
chmod 644 /vendor/libexec/valgrind/*.so
# 指定库路径重新运行Valgrind
valgrind --leak-check=full --tool=memcheck --library-path=/vendor/libexec/valgrind/ /vendor/bin/BINARYFILE

2. 用unshare突破命名空间限制

如果设备已root,直接让目标二进制在默认命名空间运行:

unshare -m /system/bin/sh -c "valgrind --leak-check=full --tool=memcheck /vendor/bin/BINARYFILE"

或者绑定挂载Valgrind目录到/vendor:

mount --bind /data/valgrind /vendor/valgrind
valgrind --leak-check=full --tool=memcheck --library-path=/vendor/valgrind/libexec/valgrind/ /vendor/bin/BINARYFILE

3. 修改SELinux上下文(仅Permissive模式有效)

先临时关闭SELinux强制模式,再修改库的上下文匹配/vendor二进制:

# 临时设置SELinux为Permissive
setenforce 0
# 修改Valgrind库的SELinux上下文
chcon -R u:object_r:vendor_exec:s0 /data/valgrind/
# 重新执行Valgrind命令
valgrind --leak-check=full --tool=memcheck /vendor/bin/BINARYFILE

内容的提问来源于stack exchange,提问作者Rey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 14:04:49