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.

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

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.

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