Frage

Während die Last meiner Kakao Anwendung, mein Programm stürzt mit der Meldung EXC_BAD_ACCESS. Der Stack-Trace ist nicht hilfreich. Irgendwelche Hinweise darauf, wie ich das Problem finden kann?

War es hilfreich?

Lösung

Ich habe mal gesehen, wo dies geschehen kann, wenn Sie ein Objekt zuzugreifen versuchen, die Sie nicht richtig behalten haben so seine entweder nicht auf ein Objekt eines anderen Typs auf eine gültige Kopie des Objekts oder das Zeige zeigen. Platzieren frühen Haltepunkte und die Analyse der Objekte, wie Sie durch Inbetriebnahme mit po und Druck in gdb Schritt ist die beste Wahl.

Andere Tipps

Dies ist in der Regel, das ein Speicher-Management-Fehler.

Stellen Sie sicher, dass alle Ihre Steckdose Erklärungen folgen Best Practice:

@interface MyClass : MySuperclass {
    UIClass *myOutlet;
}
@property (nonatomic, retain) IBOutlet UIClass *myOutlet;
@end

Dieses Format stellt sicher, dass Sie die Speicherverwaltung direkt auf jeder Plattform mit jedem Super erhalten.

Überprüfen Sie alle awakeFromNib Methoden, um sicherzustellen, dass Sie nicht über-Releasing-Objekte etc.

Eine neue Antwort auf einen alten Thread ... in XCode 4 der effektivste Weg EXC_BAD_ACCESS Ausnahmen zu diagnostizieren ist Instrumente zu benutzen, um Ihre App zum Profil (von XCode Klick Produkt / Profil und wählen Zombies). Dies wird helfen, Sie Nachrichten an deallokierten Objekte gesendet zu identifizieren.

hinzu: der wichtigste Grund für Aufheben der Archivierung von Ausfall zu vergessen „Selbst zurückkehren;“ vom -init einer benutzerdefinierten Klasse. Es tut sehr weh: (

Überprüfen Sie Konsolenprotokoll (Programme / Dienstprogramme / Console.app). Wenn das Programm beim Start abstürzt, und es ist etwas falsch mit der Initialisierung, oft schreibt er dort einige hilfreiche Fehlermeldungen aus, bevor es abstürzt.

Dies ist ein möglicher Grund. Es gibt ein IBOutlet Objekt, das nicht initialisiert wird und eine Meldung auf Null wird aufgerufen. Die Stack-Trace könnte wie folgt aussehen:

#0    0x90a594c7 in objc_msgSend
#1    0xbffff7b8 in ??
#2    0x932899d8 in loadNib
#3    0x932893d9 in +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:]
#4    0x9328903a in +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:]
#5    0x93288f7c in +[NSBundle(NSNibLoading) loadNibNamed:owner:]
#6    0x93288cc3 in NSApplicationMain
#7    0x00009f80 in main at main.mm:17

Da der Stack-Trace ist nicht hilfreich müssen Sie durch Ihren Code zu dem Schritt, den Fehler zu finden. Wenn Sie aus irgendeinem Grund nicht in der Lage sind Breakpoints zu setzen früh in Ihrer Ausführung, versuchen einige Debugger Einfügen (); Anrufe, die an den Debugger brechen wird.

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