Crash-Analyse auf Android
Für crashes unter Native (Android) und Unity (Android) beachten Sie die folgenden Hinweise.
Crash-Positionen während der Entwicklung ermitteln
Beim Debuggen eines Android Native-Programms in Android Studio muss in den Configuration-Einstellungen Debugger - Debug type auf Dual (Java + Native) gesetzt werden.

Die beim Debuggen in Android Studio benötigten Informationen sind unten dargestellt.

Geben Sie bt in lldb ein, um die crash-Ursache und den code stack zu erhalten, wie unten gezeigt:
(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
Wenn der code stack Inhalte enthält, die mit libEasyAR.so zusammenhängen, kann dies darauf hinweisen, dass der crash mit EasyAR zusammenhängt. Wenn nicht, ist der crash mit hoher Wahrscheinlichkeit nicht mit EasyAR verbunden.
Geben Sie image dump sections libEasyAR.so in lldb ein, um die load address des Abschnitts .text in der dynamic library zu erhalten, wie unten gezeigt:
(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
...
Crash-Positionen nach dem Release ermitteln
Auch nach dem Release können crashes auftreten.
Wenn ein reproduzierbarer crash auftritt, können Sie versuchen, das in Android Studio integrierte Profile/Debug-Tool zu verwenden. Folgen Sie anschließend der Entwicklungsmethode, um die crash-Position zu erhalten.

Wenn ein crash schwer zu reproduzieren ist, können Sie eine crash reporting library verwenden, um Crash-Informationen der Anwendung abzufangen und an einen Server zu melden. Beachten Sie jedoch, dass die Crash-Informationen sowohl den code stack als auch die module load address enthalten müssen. Da Android seit 4.0 ASLR (address space layout randomization) eingeführt hat, kann die load address des dynamic library-Moduls bei jedem Lauf unterschiedlich sein, wodurch sich auch code addresses dynamisch ändern. Nur wenn der relative Wert zwischen der code address im code stack und der load address des dynamic library-Moduls bekannt ist, kann ermittelt werden, wo das Programm abgestürzt ist.
Wenn der code stack Inhalte enthält, die mit libEasyAR.so zusammenhängen, kann dies darauf hinweisen, dass der crash mit EasyAR zusammenhängt. Wenn nicht, ist der crash mit hoher Wahrscheinlichkeit nicht mit EasyAR verbunden.
Weitere crash-bezogene Informationen
Versionsnummer von EasyAR Sense und EasyAR Sense Unity Plugin
Zum Beispiel 4.7.0.11800-cf8e24e30
Community Edition / Enterprise Edition
CPU-Architektur
aarch64/armeabi-v7a