3 Stimmen

Ich erhalte den Fehler 0x8badf00d in der iPhone-App, und es ist nicht der übliche Verdächtige

Ich habe einen zufälligen Absturz in meiner App beim Starten.

Ich bin mir ziemlich sicher, dass dies nicht die Startzeit ist (wie in Was bedeutet 8badf00d? ), weil die App schnell startet.

Das Schlimmste ist, dass das Absturzprotokoll nicht simbolisiert werden kann (ich kann die Zeilennummern des Quellcodes nicht abrufen). Dies ist der Fehler:

Exception Type:  00000020
Exception Codes: 0x8badf00d
Highlighted Thread:  0

Application Specific Information:
Failed to launch
Thread 0:
0   JhonSell                        0x000c63d6 0x1000 + 807894
1   JhonSell                        0x000c7ffe 0x1000 + 815102
2   JhonSell                        0x000c9646 0x1000 + 820806
3   JhonSell                        0x000ca50a 0x1000 + 824586
4   JhonSell                        0x000b3b72 0x1000 + 732018
5   JhonSell                        0x000b3e1e 0x1000 + 732702
6   JhonSell                        0x000b3fd4 0x1000 + 733140
7   JhonSell                        0x0000a312 0x1000 + 37650
8   JhonSell                        0x0000aa7c 0x1000 + 39548
9   JhonSell                        0x00006e7c 0x1000 + 24188
10  JhonSell                        0x0000fede 0x1000 + 61150
11  JhonSell                        0x00004080 0x1000 + 12416
12  UIKit                           0x30a4ef24 -[UIApplication performInitializationWithURL:asPanel:] + 160
13  UIKit                           0x30a57dec -[UIApplication _runWithURL:] + 644
14  Foundation                      0x306945a2 __NSFireDelayedPerform + 326
15  CoreFoundation                  0x30269d88 CFRunLoopRunSpecific + 2642
16  CoreFoundation                  0x30269320 CFRunLoopRunInMode + 44
17  GraphicsServices                0x31567e58 GSEventRunModal + 268
18  UIKit                           0x30a4fa6c -[UIApplication _run] + 520
19  UIKit                           0x30a591d0 UIApplicationMain + 1132
20  JhonSell                        0x00002290 0x1000 + 4752
21  JhonSell                        0x0000202c 0x1000 + 4140

Ich kann es nicht debuggen (ich versuche, es anzuhängen, aber die App wird vom Watchdog beendet, glaube ich).

10voto

Rob Punkte 1344

Es gibt drei Methoden in Ihrer UIApplicationDelegate-Implementierung, die innerhalb von 5-6 Sekunden beendet werden müssen, sonst wird das iPhone Ihre Anwendung beenden (dies gilt nicht, wenn Sie mit einem Debugger und auf dem Simulator verbunden sind). Ich bin nicht sicher, ob das genaue Zeitintervall irgendwo dokumentiert ist, aber das ist, was ich experimentell ermittelt habe. Es gibt zwei beim Start, applicationDidFinishLaunching: und application:didFinishLaunchingWithOptions, und eine beim Herunterfahren, applicationWillTerminate.

Sie sollten darauf achten, dass alle Netzwerkzugriffe oder zeitaufwändigen Operationen in diesen Methoden asynchron ausgeführt werden, damit die Methode schnell zurückkehren kann.

Das ist das Einzige, von dem ich weiß, dass es zu Watchdog-Abstürzen beim Starten führen kann.

Weitere Hinweise zum Stacktrace: Wenn Sie OS 3.0 und das 3.0 SDK verwenden, sollte Organizer dies vorher tun. Stellen Sie einfach sicher, dass Sie die dSYM-Dateien aus der -exact- Build auf der Festplatte verfügbar zu Spotlight irgendwo halten. Dann, wenn Sie @ die Spur unter dem Organizer in XCode aussehen, sollte es Symbole automatisch für Sie hinzufügen.

6voto

slf Punkte 22309

8BADF00D U Ausnahmecode in iPhone-Absturzberichten wenn eine Appli zum Starten oder Beenden benötigt.

Siehe auch

DEADFA11 Wird von Apple als Ausnahmecode in iPhone-Absturzberichten verwendet, wenn der Benutzer die Anwendung mit Gewalt beendet hat.

3voto

DaveR Punkte 9360

Apples iPhone-Absturzmeldung Dokument deutet darauf hin, dass dieser Fehlercode auf einen Watchdog-Timeout hinweist:

Watchdog-Timeout: Unterscheidet sich durch den Ausnahmecode 0x8badf00d. Timeouts treten auf, wenn eine Anwendung zu lange zum Starten oder Beenden braucht.

Da im Unfallbericht das Gleiche steht, ist es ziemlich wahrscheinlich, dass dies der Fall ist. Vielleicht ist es nicht das Starten der Anwendung, sondern das Beenden - das iPhone OS erwartet, dass es in der Lage ist, Anwendungen sehr schnell zu beenden (z. B. zurück zum Betriebssystem zu gehen, wenn ein Anruf eingeht) - vielleicht braucht Ihre Anwendung zu lange, um herunterzufahren?

Was das Fehlen von Symbolen in der Rückverfolgung angeht - haben Sie sich die Symbolisieren Nutzen?

2voto

yujean Punkte 795

Am Ende dieses technischen Hinweises von Apple finden Sie die Erklärung von Apple: http://developer.apple.com/library/ios/#technotes/tn2151/_index.html

Außerdem ist hier ein Screenshot zu sehen: http://cl.ly/19391r1x213u0U440t17

-1voto

Aviad Ben Dov Punkte 6231

Mir scheint, Sie haben "schlechtes Essen gegessen" (verstehen Sie das? 8 schlechtes f00d?)

Wie auch immer, zu meinem Verständnis bedeutet dies, dass Sie einen uninitialisierten Zeiger in Ihrer Anwendung verwenden, aus dem Aussehen der es in der Initialisierung von es.

(Jedenfalls scheint das der Mann in dem Kommentar zu sagen hier )

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