Crash Reporting ist ein System zur Erfassung, Verarbeitung und Analyse von Informationen über Abstürze mobiler Apps, das Entwicklern ermöglicht, Fehler in der Produktion zu erkennen und zu beheben. Laut Google Firebase, 2024 verkürzt die Einführung von Crash-Reporting die Diagnosezeit von Problemen von Stunden auf Minuten und verbessert die Release-Stabilität um 35–50%. Ohne ein solches System erfahren Entwickler nur aus Benutzerbewertungen von Abstürzen.
Wichtige Punkte
Crash Reporting ist der Prozess der automatischen Erfassung technischer Informationen über App-Abstürze und deren zentrale Übermittlung an einen Server zur Analyse. Im Gegensatz zur Protokollierung erfasst Crash-Reporting gezielt Notsituationen – den Moment, in dem die App vom System oder Betriebssystem zwangsweise beendet wurde.
Jeder Absturzbericht enthält drei Schlüsselkomponenten: Ausnahmetyp (NullPointerException, SIGSEGV, NSInternalInconsistencyException), vollständigen Aufrufstack mit Zeilennummern und Umgebungsinformationen – Betriebssystemversion, Gerätemodell, Größe des freien Speichers. Laut Sentry Engineering, 2024 ermöglicht die Kombination dieser drei Elemente die Reproduktion und Behebung von 85% der kritischen Fehler.
Moderne Crash-Reporting-Systeme erweitern die Funktionalität über normale Abstürze hinaus. Firebase Crashlytics gruppiert wiederkehrende Abstürze automatisch in Issues, Sentry verfolgt Regressionen zwischen Releases und Bugsnag zeigt den Benutzerpfad zum Fehler. Alle drei Dienste unterstützen iOS, Android, React Native und Flutter.
Laut Google I/O 2024 benötigen Apps ohne Crash-Reporting durchschnittlich 3–5 Arbeitstage für die Diagnose eines einzigen kritischen Fehlers, während es mit Crashlytics 15–30 Minuten dauert. Die Zeitersparnis beträgt über 90% für jeden Vorfall.
Architektur eines Crash-Reporting-Systems besteht aus drei Schichten: Client-SDK installiert in der App, Server-API zum Empfangen und Verarbeiten von Berichten und Web-Dashboard zur Analyse. Das Client-SDK fängt unbehandelte Ausnahmen ab, serialisiert sie in JSON und sendet sie beim nächsten App-Start an den Server.
Die Übermittlung des Absturzberichts erfolgt asynchron nach dem Neustart der App. Dies ist ein grundlegender Punkt: Im Moment des Absturzes kann die App keine erfolgreiche Datenübertragung über das Netzwerk garantieren. Das SDK schreibt den Bericht in den lokalen Speicher und sendet ihn beim nächsten Start über einen Hintergrundthread. Laut Firebase Engineering, 2024 gewährleistet dieser Ansatz die Zustellung von 99,7% der Absturzberichte.
Bei nicht-fatalen Ausnahmen (behandelte Ausnahmen innerhalb von try-catch) sendet das SDK den Bericht sofort, da die App weiterarbeitet. Nicht-fatale Berichte enthalten dieselben Daten wie ein Absturz, unterbrechen jedoch nicht die Benutzersitzung. Dies ist besonders nützlich für die Verfolgung von API-Anfragefehlern, Datenvalidierung und Geschäftslogik.
Absturzgruppierung – ein Serveralgorithmus, der identische Abstürze basierend auf einem Hash der letzten 5–10 Stack-Frames zusammenführt. Dadurch sieht der Entwickler nicht 1000 einzelne Berichte, sondern ein Issue mit 1000 Vorkommen auf verschiedenen Geräten und Betriebssystemversionen.
Firebase Crashlytics ist der beliebteste Crash-Reporting-Dienst für mobile Apps, der in über 3 Millionen Projekten weltweit eingesetzt wird. Der kostenlose Tarif umfasst unbegrenzte Berichte, Google Analytics-Integration und automatische Absturzgruppierung.
Einrichtung Crashlytics auf Android ist minimal: Fügen Sie die Abhängigkeit in build.gradle hinzu und initialisieren Sie das SDK in Application.onCreate. Crashlytics setzt automatisch seinen eigenen Thread.setDefaultUncaughtExceptionHandler und fängt alle unbehandelten Ausnahmen ab.
// build.gradle.kts
id("com.google.firebase.crashlytics") version "3.0.2"
// Application.kt
class App : Application() {
override fun onCreate() {
super.onCreate()
FirebaseCrashlytics.getInstance()
.setCustomKey("environment", "production")
}
fun logNonFatal(error: Throwable) {
FirebaseCrashlytics.getInstance()
.recordException(error)
}
}
Schlüsselfunktion von Crashlytics – benutzerdefinierte Schlüssel und Protokolle. Entwickler können jedem Absturzbericht bis zu 64 Schlüssel-Wert-Paare hinzufügen: Bildschirmstatus, ausgewählter Tarif, Benutzerstufe. Benutzerdefinierte Protokollmeldungen sind ebenfalls verfügbar und erscheinen im Bericht in chronologischer Reihenfolge.
Velocity Alert ist eine Crashlytics-Funktion, die starke Anstiege der Absturzzahlen für ein bestimmtes Issue überwacht. Wenn nach einem neuen Release die Anzahl der Abstürze einen Schwellenwert überschreitet, erhält das Team 5–15 Minuten vor massiven Benutzerbeschwerden eine Push-Benachrichtigung und E-Mail.
Schwellenwerteinstellung: 2x in 1 Stunde für kritische Issues. Laut Google, 2024 veröffentlichen Teams mit aktiviertem Velocity Alert Hotfix-Releases im Durchschnitt 40% schneller als Teams, die auf manuelle Dashboard-Überwachung angewiesen sind.
Auf iOS wird das Crashlytics SDK über CocoaPods oder Swift Package Manager integriert. Das SDK fängt sowohl Objective-C-Ausnahmen (über NSSetUncaughtExceptionHandler) als auch Betriebssystemsignale (SIGSEGV, SIGABRT) über seinen eigenen Mach-Ausnahmehandler ab.
Laut Apple Developer, 2024 behandelt Crashlytics für iOS bis zu 98% aller Absturztypen, einschließlich speicherbezogener Fehler auf niedriger Ebene, die von Standardwerkzeugen nicht erfasst werden. Dies macht Crashlytics zum De-facto-Standard für die iOS-Entwicklung.
Sentry ist eine Open-Source-Fehlerüberwachungsplattform, die 80+ Sprachen und Frameworks unterstützt. Im Gegensatz zu Crashlytics richtet sich Sentry an Backend-Entwickler, bietet aber vollwertige SDKs für iOS, Android, React Native und Flutter.
Sentrys Hauptvorteil ist Performance Monitoring in einem einzigen Dashboard. Entwickler sehen nicht nur Abstürze, sondern auch die Transaktionen, die dazu geführt haben: langsame Netzwerkanfragen, UI-Freezes, lange Datenbankoperationen. Laut Sentry, 2024 haben 40% der Abstürze vorausgehende Leistungsprobleme, die ohne diesen Ansatz unbemerkt bleiben.
Bugsnag unterscheidet sich in seinem Ansatz zur Fehlergruppierung – statt des Aufrufstapels analysiert es die Benutzerreise (User Journey). Jeder Absturzbericht enthält die Abfolge von Bildschirmen und Benutzeraktionen, die zum Fehler geführt haben. Dies ist besonders nützlich für komplexe Geschäftsprozesse: Bestellabwicklung, Registrierung, Zahlung.
Die Servicekosten variieren: Crashlytics ist innerhalb von Firebase kostenlos, Sentry bietet einen kostenlosen Tarif für 5000 Ereignisse pro Monat, Bugsnag ab 29 $ pro Monat. Alle drei Plattformen bieten Open-Source-SDKs an. Die Wahl des Dienstes hängt von der Teamgröße, dem Budget und den Datensicherheitsanforderungen ab.
Besonderheit von iOS – eine mehrschichtige Fehlerbehandlungsarchitektur. Crash-Reporting-SDKs müssen Objective-C-Ausnahmen (NSException), Swift-Fehler (Error), POSIX-Signale (SIGSEGV, SIGBUS) und Mach-Ausnahmen abfangen. Jeder Typ erfordert einen separaten Abfangmechanismus.
NSException ist der einfachste Typ, der über NSSetUncaughtExceptionHandler abgefangen werden kann. Laut Apple, 2024 sind jedoch nur 30% der Abstürze in modernen Swift-Apps NSException. Die restlichen 70% sind Betriebssystemsignale und Swift-Laufzeitfehler, die einen Mach-Ausnahmehandler-Mechanismus erfordern.
iOS-Entwickler sollten Crash-Reporting durch lokale Absturzerzeugung verschiedener Typen testen: __builtin_trap() für Signale, [NSException raise:...] für Ausnahmen, fatalError() für Swift. Nur so kann sichergestellt werden, dass das SDK alle Absturztypen abdeckt.
Android fügt zwei spezifische Absturztypen hinzu, die es auf iOS nicht gibt: ANR (Application Not Responding) und native Abstürze in C/C++-Code. ANR tritt auf, wenn der UI-Thread länger als 5 Sekunden blockiert ist – das System zeigt einen Dialog „App antwortet nicht" und schlägt vor, sie zu schließen.
Der standardmäßige Thread.setDefaultUncaughtExceptionHandler fängt ANR nicht ab, da es sich nicht um eine Ausnahme, sondern um ein Signal von ActivityManager handelt. Zur Verfolgung von ANR verwenden Crashlytics und Sentry einen Hintergrund-Watchdog-Thread, der alle 5 Sekunden die Reaktionsfähigkeit des UI-Threads überprüft. Laut Firebase, 2024 sind 15% aller Android-Probleme ANR, keine Abstürze.
Native Abstürze auf Android treten in C/C++-Code auf, der über JNI (Java Native Interface) ausgeführt wird. Diese Abstürze sind keine Java-Ausnahmen und werden nicht von Thread.setDefaultUncaughtExceptionHandler abgefangen. Zu ihrer Behandlung werden Google Breakpad oder Crashpad verwendet, die Sigaction-Handler für die Signale SIGSEGV, SIGABRT, SIGBUS installieren.
Laut Google I/O 2024 nimmt die Anzahl nativer Abstürze mit der Verbreitung von Spiele-Engines (Unity, Unreal Engine) und Computer-Vision-Bibliotheken (ML Kit, OpenCV) zu. Entwicklern hybrider Apps wird empfohlen, immer natives Crash-Reporting zu aktivieren.
Häufig gestellte Fragen
Crash-Reporting erfasst nur Notsituationen mit vollständigem Kontext – Aufrufstack, Speicherzustand, Betriebssystemversion. Die Protokollierung zeichnet alle App-Ereignisse auf. Crash-Reporting sendet Daten automatisch an den Server, die Protokollierung erfordert manuelle Analyse.
Firebase Crashlytics ist die optimale Wahl für Startups: kostenlos, einfach zu integrieren, unterstützt iOS und Android. Mit dem Wachstum des Projekts kann Sentry für Performance Monitoring oder Bugsnag für die Analyse von Benutzerreisen hinzugefügt werden.
Ja – Sentry bietet eine selbst gehostete Version, die auf eigenen Servern bereitgestellt wird. Alle Daten bleiben innerhalb der Unternehmensinfrastruktur. Crashlytics und Bugsnag funktionieren nur als Cloud-Dienste mit Servern von Google bzw. SmartBear.
Minimal – das Crashlytics SDK fügt ~300 KB zur APK/IPA-Größe hinzu. Sentry – ~500 KB. Beide Dienste unterstützen ProGuard/R8-Verschleierung für Android und Bitcode für iOS, was die Auswirkungen auf die endgültige Binärdateigröße reduziert.
Hauptgründe: Zeitüberschreitung des Handlers (iOS 5 Sek., Android 100 ms), fehlendes Netzwerk beim darauffolgenden Start, Beschädigung des lokalen Speichers. Crashlytics garantiert eine Zustellung von 99,7% der Berichte bei Einhaltung der Handler-Zeitbegrenzung.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch