2009-04-21 16 views
34

Manchmal stürzt meine iPhone-Anwendung mit einem seltsamen Crashlog ab, das den Ausnahmecode 0x8badf00d liest. Die Stacktraces zeigen zufällige Schnappschüsse der App-Ausführung, aber nichts Verdächtiges. Das passiert sehr selten und ich kann nicht herausfinden, wie ich es reproduzieren kann. Weiß jemand mehr über diese Art von Ausnahme- und Ausnahmecode? HierWas bedeutet 8badf00d?

ist ein Auszug aus meinem CrashLogs:

Ausnahmetyp: 00000020
Ausnahmecodes: 0x8badf00d
Hervorgehoben Thema: 0

Anwendungsspezifische Informationen:
fehlgeschlagen

deaktivieren

Gewinde 0:
...
< nichts Verdächtiges hier>
...

Unbekannte Thread mit unbekanntem Geschmack abgestürzt: 5, state_count: 1

+2

Niemand hat beantwortet tatsächlich die Frage, obwohl sie alle den Fehlercode explanined. Können Sie uns wissen lassen, was Sie tun, um die Ausnahme zu verursachen. –

Antwort

79

0x8badf00d ist der Fehlercode, der Watchdog erhebt, wenn eine Anwendung zu lange dauert, zu starten oder zu beenden. Siehe Apples Crash Reporting for iPhone OS Applications Dokument

+0

Endlich eine Antwort auf die Frage, danke! Ich muss mehr untersuchen, um zu bestätigen, dass dies der eigentliche Grund für meine Crashlogs ist, aber da Sie einen Link zu einer offiziellen Quelle bereitstellen, akzeptiere ich sie. –

+3

Normalerweise bedeutet das, dass Sie irgendwo eine Endlosschleife haben oder Sie warten auf Netzwerk-IO im Hauptthread. Es besteht auch die Möglichkeit, dass der Benutzer die Anwendung zwangsweise beendet. – rpetrich

+0

+1 für die Beantwortung der Frage. –

1

Es ist eine von einem Entwickler mit einem guten Sinn für Humor hinzugefügt Fehlercode. Da hexadezimal sowohl Buchstaben als auch Zahlen verwendet, ist es möglich Hex-Zahlen zu erzeugen, die ungefähr wie englische Wörter aussehen, wie "0xdeadbeef" usw. Ich bin mir sicher, dass die Ausnahme eine bestimmte Bedeutung hat, aber wenn es keine Hauptsymptome gibt verbunden damit, können Sie es wahrscheinlich ohne zu viel Sorge ignorieren.

1

Es ist die Idee eines Programmierers von einem Witz. Sie müssen eine Nummer für Ihren Code auswählen, aber die Nummer bedeutet nicht unbedingt etwas an sich. 8badf00d ist nur eine andere Möglichkeit, die Nummer 2.343.432.205 zu schreiben, und wurde gewählt, weil es "lustig" aussieht, wenn es in Hex für ein Ausnahmeprotokoll dargestellt wird.

+6

Ich würde behaupten, dass es nicht nur lustig aussieht, sondern dass es lustig ist! :-) –

-6

von Wikipedia 0xBAADF00D ("schlechtes Essen") wird von LocalAlloc (LMEM_FIXED) von Microsoft verwendet, um nicht initialisierten zugewiesenen Heap-Speicher anzugeben, wenn der Debug-Heap verwendet wird. [7]

+0

Woher kommt Microsofts LocalAlloc? –

7

Wenn Sie Exception Type: 00000020 und Exception Codes: 0x8badf00d erhalten, dann ist es Watchdog Timeout Crash-Berichte. Der Ausnahmecode 0x8badf00d heißt "ate bad food".

Die häufigste reason for this crash is synchronous activity on main thread. Die Lösung ist switch to asynchronous activity auf Hauptgewinde.

Screenshot for Apple document

Refer this Apple document for more detail.