Frage

Wenn ich abstürze (aus Gründen, die ich verstehe;(das ist nicht das Problem) Wenn ich versuche, etwas zu tun, womit Cocoa nicht einverstanden ist, wie etwa den Aufruf einer nicht vorhandenen Methode oder den Versuch, nil in eine Menge einzufügen, zeigt der Debugger den Stack von main() bis __pthread_kill an, ohne alle Frames, die vorhanden waren, als der eigentliche Absturzcode ausgeführt wurde.Es gibt einen Frame (9. von der Hauptseite) mit dem Namen objc_Exception_rethrow.Dies lässt mich glauben, dass Cocoa Touch versucht, irgendetwas zu tun, um alle Ausnahmen wiederherzustellen und ordnungsgemäß zu sterben, oder so.Allerdings ist es beim Debuggen sehr irritierend, nicht die Möglichkeit zu haben, die Debugging-Tools von

Gibt es eine Möglichkeit, dafür zu sorgen, dass das objc_Exception_rethrow-Verhalten nicht auftritt und einfach abstürzt, sobald eine Ausnahme ausgelöst wird?Möglicherweise gibt es eine Debug-Einstellung, die dazu führt, dass es früher abstürzt (am Rechts Zeit)?(Ich habe noch keine Änderungen an den Build-Einstellungen in diesem Projekt vorgenommen.)

War es hilfreich?

Lösung 2

Ich habe die Antwort gefunden:Setzen Sie einen Haltepunkt für Obj-C-Ausnahmen.Es wird an den Debugger weitergeleitet, wenn objc_Exception_throw getroffen wird, was gut ist.Leider geschieht dies, bevor die Ausnahme gedruckt wird, aber wir können dies trotzdem (meistens) erreichen, indem wir die Aktion des Haltepunkts auf (Debugger-Aktion) setzen. po *(id *)($ebp + 8).

Andere Tipps

Ich kenne keine Xcode-Einstellung, die die Wiederabschaffung von Ausnahmen deaktivieren kann.Meines Wissens werden sie durch die Laufzeit wiedergeworfen.Sie können versuchen, die App auszuführen, ohne dass der Debugger angeschlossen ist, und lassen Sie ihn abstürzen.Der Crash-Bericht sollte einen Abschnitt "Last Exception Backtrace" enthalten, der Ihnen genau das gibt, was Sie in diesem Fall benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top