NDK反编译crash日志

2020-03-13  本文已影响0人  咸鱼Jay

当我们的NDK出现奔溃后,查看日志可以看到如上图的一脸的懵逼,根本不清楚报错在哪里。

通过上图可以看到backtrace下面的#00是应用程序在整个方法栈中第一个位置,也就是栈顶。pc后的一串数字是调用方法的内存地址,那么我们可以通过这个内存地址可以地位错误信息在哪一行

那么这时我们可以利用addr2line工具,或者ndk-stack工具进行查看具体报错信息

一、addr2line工具

addr2line工具是在NDK开发工具包目录中/NDK/toolchains/选择编译平台/prebuilt/darwin-x86_64/bin

可以通过下面命令查看具体的报错信息:

aarch64-linux-android-addr2line -e 编译的库.so 报错的内存地址

从上面可以看到报错是在native-lib.cpp的第6行

二、ndk-stack工具

ndk-stack工具是在NDK开发工具包的根目录下

image

可以通过下面命令查看具体的报错信息:

adb logcat | $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi

1、$NDK/ndk-stack 是ndk-stack的路径
2、$PROJECT_PATH/obj/local/armeabi是你编译.so库的路径,例如我的是:.../MyNDKTest/app/build/intermediates/cmake/debug/obj/armeabi-v7a

通过打印的错误日志信息可以看出ndk-stack打印的信息是最详细的

上一篇 下一篇

猜你喜欢

热点阅读