android native 程序崩溃的调试方法
使用arm-eabi-addr2line工具跟踪Android native程序调用堆栈:
- 编译带调试的so 库
- 交叉工具链
- 跟踪定位错误位置
编译可调试的so 库
修改 Android.mk,添加:
LOCAL_CFLAGS := -g
修改application.mk,添加:
APP_OPTIM := debug
找出编译ndk的toolchain(cross-compile)路径
我这里是./prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
编译生成的so库路径:
anroid 源码下编译的路径为obj下面而不是lib下面的目录
定位错误位置
ndk 环境下为:
ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-
androideabi-addr2line -C -f -e libxxx.so 0x12345678(address)android 源码环境为:
./prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-addr2line
-C -f -e
./out/target/product/[PROJECT]/symbols/system/lib/libxx_jni.so 0x12345678(address)