3 Stimmen

Unbekannte Abstürze, nicht sehr informativer Stack-Trace (iOS)

Wir haben ein System zur Protokollierung von Abstürzen entwickelt, das alle Abstürze protokolliert und dem Server erlaubt, sie zu speichern. Wir bekommen eine Menge Abstürze, aber wir wissen nicht, was die Ursache dafür ist. Das Spiel läuft schon seit Monaten und wir haben noch nie einen dieser Abstürze gesehen, während das Spiel läuft (Debugging, Entwicklungsphase, etc.).

Seltsamerweise bekommen wir einen Haufen dieser Fehler. Ich habe versucht, sie im Code zu betrachten, aber es scheint, dass sie alle in Ordnung sind. Wenn sie es nicht wären, müsste es sofort abstürzen.

Das Einzige, was wir erhalten, ist ein Stack-Trace, der nicht sehr informativ ist. Der Stack-Trace gibt uns keinen Aufschluss, da er nichts in unserem Code enthält.

Ich möchte wissen, warum dieser Absturz auftritt und warum ich nur diesen Stack-Trace erhalte. Ich habe das Absturzprotokoll unten gepostet. Danke.

+++++++++++++++++++++++++++++++++++++++++++
#1 - Mutating method sent to immutable object (Dictionary)

-[__NSCFDictionary removeObjectForKey:]: mutating method sent to immutable object
(

    \4   libc++abi.dylib                     0x30e093c5 _ZL19safe_handler_callerPFvvE + 76\"
    \"5   libc++abi.dylib                     0x30e09451 _ZdlPv + 0\"
    \"6   libc++abi.dylib                     0x30e0a825 __cxa_current_exception_type + 0\"
    \"7   libobjc.A.dylib                     0x3687d2a9 objc_exception_rethrow + 12\"
    \"8   CoreFoundation                      0x353ac50d CFRunLoopRunSpecific + 404\"
};

+++++++++++++++++++++++++++++++++++++++++++
#2 - Inserting nil object in array

*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil
(

    \4   libc++abi.dylib                     0x380eb3c5 _ZL19safe_handler_callerPFvvE + 76\"
    \"5   libc++abi.dylib                     0x353e5451 _ZdlPv + 0\"
    \"6   libc++abi.dylib                     0x353e6825 __cxa_current_exception_type + 0\"
    \"7   libobjc.A.dylib                     0x35d1b2a9 objc_exception_rethrow + 12\"
    \"8   CoreFoundation                      0x3776b50d CFRunLoopRunSpecific + 404\"
};

+++++++++++++++++++++++++++++++++++++++++++
#3 - Array out of bounds

*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]
(

    \4   libc++abi.dylib                     0x353e53c5 _ZL19safe_handler_callerPFvvE + 76\"
    \"5   libc++abi.dylib                     0x353e5451 _ZdlPv + 0\"
    \"6   libc++abi.dylib                     0x353e6825 __cxa_current_exception_type + 0\"
    \"7   libobjc.A.dylib                     0x35d1b2a9 objc_exception_rethrow + 12\"
    \"8   CoreFoundation                      0x3776b50d CFRunLoopRunSpecific + 404\"
};

2voto

gavinb Punkte 18143

Es sieht aus wie eine unbehandelte Objective-C-Ausnahme, die von der Ausführungsschleife zurückgeworfen wird und die schließlich die terminate . Dadurch gehen die Stack-Backtrace-Informationen verloren.

Wie protokollieren Sie die Anwendungsabstürze? Ich gehe davon aus, dass Sie Ihren eigenen Exception-Handler nicht registriert haben, indem Sie NSSetUncaughtExceptionHandler ? So können Sie den Stack untersuchen, um die eigentliche Ursache des Problems zu finden. Es gibt Skripte, um Stack-Dumps zu symbolisieren - lesen Sie die Apple-Dokumente für Details.

Dies ist ein sehr ähnliches Problem:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X