Table of Contents

Analyse des crash sur Android

Pour les crash sur Native (Android) et Unity (Android), consultez les instructions suivantes.

Obtenir les emplacements de crash pendant le développement

Lors du débogage d'un programme Android Native dans Android Studio, vous devez régler Debugger - Debug type sur Dual (Java + Native) dans les paramètres Configuration.

crash Android configuratio

Les informations nécessaires lors du débogage dans Android Studio sont indiquées ci-dessous.

crash Android stack

Saisissez bt dans lldb pour obtenir la cause du crash et le code stack, comme ci-dessous :

(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

Lorsque le code stack contient du contenu lié à libEasyAR.so, cela peut indiquer que le crash est lié à EasyAR. Sinon, il y a une forte probabilité que le crash ne soit pas lié à EasyAR.

Saisissez image dump sections libEasyAR.so dans lldb pour obtenir la load address de la section .text dans la dynamic library, comme ci-dessous :

(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
...

Obtenir les emplacements de crash après release

Des crash peuvent également se produire après release.

Si un crash reproductible se produit, vous pouvez essayer d'utiliser l'outil Profile/Debug intégré à Android Studio. Suivez ensuite la méthode de développement pour obtenir l'emplacement du crash.

crash Android debug

Si un crash est difficile à reproduire, vous pouvez utiliser une crash reporting library pour intercepter les informations de crash de l'application et les signaler à un serveur. Notez toutefois que les informations de crash doivent inclure à la fois le code stack et la module load address. Comme Android a introduit ASLR (address space layout randomization) à partir de la version 4.0, la load address du module dynamic library peut être différente à chaque exécution, ce qui entraîne également un changement dynamique des code addresses. Ce n'est qu'en connaissant la valeur relative entre la code address dans le code stack et la load address du module dynamic library que vous pouvez savoir où le programme a crash.

Lorsque le code stack contient du contenu lié à libEasyAR.so, cela peut indiquer que le crash est lié à EasyAR. Sinon, il y a une forte probabilité que le crash ne soit pas lié à EasyAR.

Autres informations liées au crash

  • Numéro de version de EasyAR Sense et EasyAR Sense Unity Plugin

    Par exemple, 4.7.0.11800-cf8e24e30

  • Community Edition / Enterprise Edition

  • Architecture CPU

    aarch64/armeabi-v7a