Red de conocimiento informático - Material del sitio web - Cómo utilizar arm-linux-androideabi-addr2line

Cómo utilizar arm-linux-androideabi-addr2line

1. Agregue la ruta al archivo ejecutable arm-linux-androideabi-addr2line en ndk en el archivo de configuración ~/.bashrc, por ejemplo:

export PATH=$PATH: ~/dlna/android-ndk -r6b /toolchains/ arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin

2 Haga que la configuración surta efecto: fuente ~/.bashrc

3. Utilice la herramienta. Por ejemplo: arm-linux-androideabi-addr2line -C -f -e ~/workspace/DLNA/libs/armeabi/libctrlpt.so 0003deb4

Entre ellos, 0003deb4 es el valor de pc en la información de la pila .

Métodos de depuración para fallos de aplicaciones de Android

Hay dos métodos para analizar la información de la pila de fallos

1 Google proporciona un script en Python, que se puede descargar desde siguiente URL Descargar

/p/android-ndk-stacktrace-analyzer/

Descargue el script de Python y use adb logcat -d gt;logfile para exportar el registro de fallos,

El uso arm-eabi-objdump se encuentra en build/prebuilt/linux-x86/arm-eabi-4.2.1/bin

. Convierta so o exe a código ensamblador, por ejemplo: arm-eabi-objdump -S mylib.so gt; mylib.asm,

Usar script

python parse_stack.py lt;asm -filegt; lt; logcat-filegt.

2 Utilice arm-linux-androideabi-addr2line directamente en NDK

(D:\android-ndk-r8\toolchains\arm-linux -

androideabi-4.4.3\prebuilt\ windows\binarm-linux-androideabi-addr2line.exe)

Ejemplo: arm-linux-androideabi-addr2line -C -f - e libxxx.so 0x#####(dirección)

Suplemento sobre el uso de la herramienta de depuración de Android addr2line

Utilice addr2line para rastrear errores en su propia biblioteca dinámica (archivo), suplemento:

Para resolver el problema de ?: 0, no muestre el número de líneas del código fuente

En el archivo Android.mk:

Java código

LOCAL_CFLAGS

:=

-D__STDC_CONSTANT_MACROS

-Wl,-Map=test.map

-g

Agrega 2 parámetros de compilación -Wl, -Map=test.map -g.

Agregar indicadores de advertencia y depuración de gcc

arm-linux-androideabi-addr2line -C -f -e /project directorio/obj/local/armeabi/libfaa_jni.so 0024362e

Consejos: 1. Tenga en cuenta que la ubicación del archivo de depuración está en el directorio obj, no el archivo so en el directorio libs

2. 0024362e es la ubicación del mecanismo de error

Además:

Agregue el archivo Application.mk en el directorio jni/, cámbielo al modo de depuración y depure APP_OPTIM := debug