android native 程序崩溃的调试方法

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)

你可能感兴趣的:(android-调试)