Table of Contents

Abbruchanalyse auf Android

Informationen zu Abstürzen auf Nativ (Android) und Unity (Android) finden Sie in den folgenden Erläuterungen.

Entwicklung von Abbruchpositionen abrufen

Beim Debuggen von Native-Programmen für Android in Android Studio muss in den Konfigurationseinstellungen der Debugger - Debug-Typ auf Dual (Java + Native) geändert werden.

crash Android configuratio

Die während des Debuggens in Android Studio benötigten Informationen sind in der folgenden Abbildung dargestellt.

crash Android stack

Durch Eingabe von bt in lldb erhält man die Abbruchtursache und den Code-Ausführungsstapel wie folgt:

(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 Inhalte im Zusammenhang mit libEasyAR.so im Code-Ausführungsstapel vorhanden sind, kann dies auf einen Absturz im Zusammenhang mit EasyAR hindeuten; wenn nicht, ist die Wahrscheinlichkeit hoch, dass der Absturz nicht mit EasyAR zusammenhängt.

Durch Eingabe von image dump sections libEasyAR.so in lldb erhält man die Ladeadresse des .text-Abschnitts der dynamischen Bibliothek wie folgt:

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

Abbruchpositionen nach der Veröffentlichung abrufen

Nach der Veröffentlichung kann es auch zu Abstürzen kommen.

Wenn ein reproduzierbarer Absturz auftritt, können Sie versuchen, die integrierten Profile/Debug-Tools von Android Studio zu verwenden. Fahren Sie dann wie bei der Entwicklung fort, um die Abbruchposition zu erhalten.

crash Android debug

Bei schwer reproduzierbaren Abstürzen können Crash-Reporting-Bibliotheken verwendet werden, um Anwendungsabsturzinformationen abzufangen und an einen Server zu melden. Es ist jedoch wichtig sicherzustellen, dass die Absturzinformationen unbedingt den Code-Ausführungsstapel und die Modulladeadressen enthalten. Da Android ab Version 4.0 ASLR (Address Space Layout Randomization) eingeführt hat, können sich die Ladeadressen dynamischer Bibliotheksmodule bei jedem Start ändern, was zu variablen Codeadressen führt. Nur durch Kenntnis des relativen Werts zwischen der Codeadresse im Ausführungsstapel und der Modulladeadresse der dynamischen Bibliothek kann festgestellt werden, an welcher Position der Absturz erfolgte.

Wenn Inhalte im Zusammenhang mit libEasyAR.so im Code-Ausführungsstapel vorhanden sind, kann dies auf einen Absturz im Zusammenhang mit EasyAR hindeuten; wenn nicht, ist die Wahrscheinlichkeit hoch, dass der Absturz nicht mit EasyAR zusammenhängt.

Weitere abbruchrelevante Informationen

  • Versionsnummer von EasyAR Sense und EasyAR Sense Unity Plugin

    Z.B. 4.7.0.11800-cf8e24e30

  • Community Edition/Enterprise Edition

  • CPU-Architektur

    aarch64/armeabi-v7a