iOS Absturz ohne Fehler oder Stack Trace
Habe eine harte Zeit Ortung eines Absturzes in eine iPad-Applikation. Die Schwierigkeit wirklich ergibt sich aus der Tatsache, dass es keine Fehler oder stack-trace vorhanden, wenn die Anwendung fehlschlägt. Es geht einfach Weg wie Keiser Soze, "Und so, Puh. Er ist Weg.".
Habe ich repliziert den Absturz auf sowohl auf dem simulator und Gerät. Es sind keine device-Protokolle, nichts in der Konsole, etc.
Ich weiß, dass beim Sturz einige CoreGraphics
Operationen, die in einem hintergrund-thread. Typischerweise sind drei oder so NSOperations sind, treten einige Bild-Mischungen.
Die assemblage besteht aus CGContext* Anrufe (DrawImage, SetBlendMode, SetAlpha, etc). Die NSOperation ruft wieder zu einem Stellvertreter in den Haupt-thread zu handhaben das Bild und legen Sie es auf UIImage
so sollte es nicht sein, ein UI-main-thread-Konflikt, aber ich bin nicht Diskontierung alles an dieser Stelle.
Gibt es einige Xcode tricks, die ich bin fehlt, um die Spur genau, was passiert? Oder zumindest einen besseren Hinweis, wo das problem liegt?
BEARBEITEN ich habe die app ausführen in " - Instrumenten-tracking memory-Nutzung und sehen Sie, es ist ziemlich rock steady um 2MB. Also, glaube nicht, dass es ein Speicher-Problem. Aber nach Betrachtung dieser rock steady 2MB scheint ungewöhnlich niedrig ist. Gibt es eine chance, Instrumente ist nicht Kommissionierung bis die CoreGraphics Zuweisungen?
InformationsquelleAutor der Frage MarkPowell | 2011-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mangels einer besseren Lösung, und wenn es nicht offensichtlich ist, Pfeffern Sie Ihre app mit NSLogs Kreis, wo dies geschieht, dann tiefer gebohrt werden, von dort aus über Haltepunkte und/oder zusätzliche Protokolle.
InformationsquelleAutor der Antwort fzwo
Versuchen, das Lesen der Register.
Immer, wenn meine app stürzt ab, ohne Fehlermeldung, in den meisten Fällen, die ich gefunden haben, die Ausnahme, die in den Registern.
Zuerst gehen Sie zu Registerkarte "Ausnahmen" und "Add Exception Breakpoint' mit dem + in der linken unteren Ecke.
Dann, wenn die app abstürzt, klicken Sie auf "0 objc_exception_throw" unter Thread 1
Endlich in die Konsole eingeben:
(Sie sollten eine Liste von Registern)
po $rax (in der Regel die Ausnahme ist im 'rax')
(Sie sollten sehen, die Ausnahme, die Ausgabe auf der Konsole)
Hoffe, das hilft.
InformationsquelleAutor der Antwort shrishaster
Super späte Antwort, aber ich habe festgestellt, dass die Verwendung von try/catch-hilft Informationen geben, wenn ich nicht bekommen kann ein stack-trace und meine Anwendung zieht ein Keiser Soze.
InformationsquelleAutor der Antwort dragonflyesque
In meinem Fall, es war, weil ich hatte "Zombie-Objekte" aktiviert, in das System zu helfen, das problem zu finden, die Sie schließlich verursacht es run out of memory und Abstürzen.
InformationsquelleAutor der Antwort Paul Slocum
In meinem Fall war es wegen der schlechten auslassanschluss in das storyboard.
Prüfen Sie mit Haltepunkt, wenn
viewDidLoad
Methode derUIViewController
geladen werden, aufgerufen wird. Wenn nicht, überprüfen Sie Ihre Steckdose verbindungen in das storyboard.Falschen Anschluss stürzt die app ohne Fehlermeldung oder stack-trace.
Frage ich mich, was passiert ist, um die
this class is not key value coding-compliant for the key
Fehler, die verwendet werden, um zu zeigen, die in älteren Versionen von XCode.InformationsquelleAutor der Antwort Rashmikant Makwana
In meinem Fall war es durch ein Objekt freigegeben werden. Normalerweise würde Sie sagen-Nachricht freigegeben Instanz oder sowas, aber das ist es nicht. Ich habe das iPhone meldet und dies gefunden: KERN_INVALID_ADDRESS, die ich gegoogelt und stieß auf dieses: KERN_INVALID_ADDRESS
Aktiviert zombie-Objekte und festgestellt, dass ich versuchte, verwenden Sie eine Instanz aufgehoben. Er hat mir auch erzählt, was für ein Objekt es war in den logs hinterher.
Hoffe, es hilft für zukünftige Besucher.
InformationsquelleAutor der Antwort chrs