so库中错误信息查看

本文详细介绍如何通过NDK工具定位Android应用中SO库的错误信息。从理解错误日志开始,选择正确的编译工具,到使用addr2line工具解析地址,最后在命令行中运行指令,一步步引导读者定位并解决SO库中的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看so库中报错信息

1.报错log如下


libFpCollect.so为自己编译运行的so文件,需定位具体的错误信息。

2.使用工具

使用ndk中自带的文件程序,路径为android-ndk-r13b\toolchains
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QbYDOdMz-1609831295857)(https://i.imgur.com/kPWAJPQ.png)]

aarch64-linux-android-4.9:so库为arm架构 64位
arm-linux-androideabi-4.9:so库为arm架构 32位

mips64el-linux-android-4.9:so库为mips架构 64位
mipsel-linux-android-4.9:so库为mips架构 32位

x86_64-4.9:so库为x86架构 64位
x86-4.9:so库为x86架构 32位

根据所生成的so的架构平台不同,选择不同的架构平台文件夹里的文件程序,如我这里的so文件架构是arm 32位的,所以选择arm-linux-androideabi-4.9里的文件程序

如何判断是32位还是64位?

可根据报错log中pc字段后的数字个数**“000422e0”**,如为8个,是32位的;如为16个,是64位的。

3.工具使用

打开cmd命令行,输入命令:aarch64-linux-android-addr2line.exe文件路径 -Cfape debug的so文件路径 0x+错误log数字

aarch64-linux-android-addr2line.exe文件路径:android-ndk-r13b\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin\aarch64-linux-android-addr2line.exe

-Cfape:命令行参数
debug的so文件路径:此so文件需要是编译的debug类型的文件,是路径在obj\local下的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U72N1Gco-1609831295862)(https://i.imgur.com/TBr509r.png)]
编译出的so库,在libs下的为release版本
在obj/local下的为debug版本,想看so库错误信息需使用obj/local下的so文件

0x+错误log数字:错误log数字前需加**0x**

4.命令行运行

J:\Android\android-sdk\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-addr2line.exe -Cfape F:\asWorkPlace\Android\apk\JniCollectNav\app\src\main\obj\local\armeabi-v7a\libFpCollect.so 0x000422e0

结果为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值