jni经常崩溃打印出addr日志,
01-01 17:59:38.596: I/DEBUG(253): #03 pc 00000e80 /data/app-lib/com.example.hellojni-1/libhello-jni.so (__aeabi_idiv0+8)
01-01 17:59:38.596: I/DEBUG(253): #04 pc 00000cf4 /data/app-lib/com.example.hellojni-1/libhello-jni.so (willCrash+32)
对于Android 程序员来说比较抓瞎不知道如何解读。这种日志最多只能解读出哪个so出事了并不知道具体是哪一行出事。
解决:
使用arm-linux-androideabi-addr2line 定位出错位置
使用的 ndk路径/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-addr2line -e 生成so库的项目路径/obj/local/armeabi-v7a/libhello-jni.so 00000cf4(错误地址)。
注意:解读时使用的so库并非是你在lib目录调用的so库,而是你在编译该so库时在obj目录下产生的对应的那个so库。
如果执行上面命令后打印出 hello-jni.c:10(具体的行号)则表示解读成功,可以去该行看看情况了。
网友评论