2009-04-21 14 views
34

A veces la aplicación de mi iPhone se bloquea con un registro de fallas extraño, que dice que el código de excepción es 0x8badf00d. Las stacktraces muestran instantáneas aleatorias de la ejecución de la aplicación, pero nada sospechoso. Esto ocurre muy raramente y no puedo descubrir cómo reproducirlo. ¿Alguien sabe más sobre este tipo de excepción y código de excepción?¿Qué significa 8badf00d?

Aquí es un extracto de mis CrashLogs:

Tipo de excepción: 00000020
códigos de excepción: 0x8badf00d
Tema Destacado: 0

Solicitud de Información Específica:
Error al desactivar

Hilo 0:
...
< nada sospechoso aquí>
...

hilo desconocido chocó con sabor desconocido: 5, state_count: 1

+2

En realidad nadie ha respondido a la pregunta, aunque todos ellos han explanined el código de error. ¿Podría decirnos qué está haciendo para causar la excepción? –

Respuesta

79

0x8badf00d es el código de error que plantea el organismo de control cuando una aplicación toma demasiado tiempo para iniciar o terminar. Consulte el documento Crash Reporting for iPhone OS Applications de Apple

+0

Finalmente una respuesta a la pregunta, ¡gracias! Tendré que investigar más para confirmar que esta es la razón real de mis registros crashlogs, pero dado que proporcionas un enlace a una fuente oficial, lo aceptaré. –

+3

Normalmente significa que tiene un bucle infinito en alguna parte, o está esperando la IO de red en el hilo principal. También existe la posibilidad de que el usuario abandone la aplicación. – rpetrich

+0

+1 por responder la pregunta. –

1

Es un código de error añadido por un desarrollador con un buen sentido del humor. Debido a que el hexadecimal usa letras y números, es posible obtener números hexadecimales que parecen aproximadamente palabras en inglés, como "0xdeadbeef", etc. Estoy seguro de que la excepción tiene un significado específico, pero si no hay síntomas importantes asociado con él, probablemente puede ignorarlo sin demasiada preocupación.

1

Es la idea de algún programador de una broma. Debes elegir un número para tu código, pero el número no necesariamente significa nada en sí mismo. 8badf00d es simplemente otra forma de escribir el número 2,343,432,205, y se eligió porque se ve "gracioso" cuando se representa en hexadecimal para un registro de excepción.

+6

Yo diría que no solo se "ve" gracioso, ¡sino que es gracioso! :-) –

-6

de wikipedia 0xBAADF00D ("comida mala") es utilizado por LocalAlloc de Microsoft (LMEM_FIXED) para indicar memoria de montón asignada no inicializada cuando se utiliza el montón de depuración. [7]

+0

¿Dónde se muestra el LocalAlloc de Microsoft aquí? –

7

Si obtiene Exception Type: 00000020 y Exception Codes: 0x8badf00d entonces es watchdog timeout crash reports. El código de excepción 0x8badf00d se llama "ate bad food".

La más común reason for this crash is synchronous activity on main thread. La solución es switch to asynchronous activity en el hilo principal.

Screenshot for Apple document

Refer this Apple document for more detail.