Table of Contents

Análisis de crash en Android

Para crash en Native (Android) y Unity (Android), consulte las siguientes instrucciones.

Obtener ubicaciones de crash durante el desarrollo

Al depurar un programa Android Native en Android Studio, debe cambiar Debugger - Debug type a Dual (Java + Native) en la configuración de Configuration.

crash Android configuratio

La información necesaria al depurar en Android Studio se muestra a continuación.

crash Android stack

Introduzca bt en lldb para obtener la causa del crash y el code stack, como se muestra a continuación:

(lldb) bt
* thread #16, name = 'samples.helloar', stop reason = signal SIGSEGV: invalid address (fault address: 0x9c40)
* frame #0: 0x0000004922f3a1d8 libEasyAR.so`___lldb_unnamed_symbol3056$$libEasyAR.so + 6088
    frame #1: 0x0000004922f38568 libEasyAR.so`___lldb_unnamed_symbol3054$$libEasyAR.so + 288
    frame #2: 0x0000004922f347f8 libEasyAR.so`___lldb_unnamed_symbol2876$$libEasyAR.so + 332
    frame #3: 0x00000049be2390c8 libc.so`__pthread_start(void*) + 40
    frame #4: 0x00000049be1f04f8 libc.so`__start_thread + 72

Cuando el code stack contiene contenido relacionado con libEasyAR.so, puede indicar que el crash está relacionado con EasyAR. Si no lo contiene, hay una alta probabilidad de que el crash no esté relacionado con EasyAR.

Introduzca image dump sections libEasyAR.so en lldb para obtener la load address de la sección .text en la dynamic library, como se muestra a continuación:

(lldb) image dump sections libEasyAR.so
...
  SectID     Type             Load Address                             Perm File Off.  File Size  Flags      Section Name
...
  0x00000010 code             [0x0000004922e30cfc-0x0000004923654558)  r-x  0x00256cfc 0x0082385c 0x00000006 libEasyAR.so..text
...

Obtener ubicaciones de crash después del release

También puede haber crash después del release.

Si aparece un crash reproducible, puede intentar usar la herramienta Profile/Debug integrada en Android Studio. Luego siga el método de desarrollo para obtener la ubicación del crash.

crash Android debug

Si el crash es difícil de reproducir, puede usar una crash reporting library para interceptar la información de crash de la aplicación y reportarla al servidor. Pero tenga en cuenta que la información de crash debe incluir tanto el code stack como la module load address. Como Android introdujo ASLR (address space layout randomization) a partir de 4.0, la load address del módulo dynamic library puede ser diferente en cada ejecución, lo que hace que la code address cambie dinámicamente. Solo conociendo el valor relativo entre la code address en el code stack y la load address del módulo dynamic library se puede saber dónde ocurrió el crash del programa.

Cuando el code stack contiene contenido relacionado con libEasyAR.so, puede indicar que el crash está relacionado con EasyAR. Si no lo contiene, hay una alta probabilidad de que el crash no esté relacionado con EasyAR.

Otra información relacionada con crash

  • Número de versión de EasyAR Sense y EasyAR Sense Unity Plugin

    Por ejemplo, 4.7.0.11800-cf8e24e30

  • Community Edition / Enterprise Edition

  • Arquitectura CPU

    aarch64/armeabi-v7a