ios xcode debugging crash xcode-instruments

Accidente de iOS sin error o Stack Trace



xcode debugging (6)

A falta de una solución mejor, y si no es obvio, pimienta su aplicación con NSLogs para rodear donde ocurre esto, luego profundice desde allí a través de puntos de corte y / o registros adicionales.

Tener dificultades para rastrear un bloqueo en una aplicación de iPad. La dificultad realmente proviene del hecho de que no hay errores o el seguimiento de la pila está presente cuando falla la aplicación. Simplemente se va como Keizer Soze, "Y así, poof. Se ha ido".

He replicado el bloqueo tanto en el simulador como en el dispositivo. No hay registros de dispositivo, nada en la consola, etc.

Sé que durante el accidente se están produciendo algunas operaciones de CoreGraphics en un hilo de fondo. Normalmente, tres o más NSOperations están pateando algunas combinaciones de imágenes.

La mezcla consiste en llamadas CGContext * (DrawImage, SetBlendMode, SetAlpha, etc.). NSOperation llama a un delegado en el hilo principal para que maneje la imagen y la configure en UIImage , por lo que no debería ser un conflicto de subproceso principal de UI, pero no estoy descartando nada en este momento.

¿Hay algunos trucos de Xcode que me faltan para rastrear exactamente lo que está sucediendo? ¿O al menos obtener una mejor pista de dónde radica el problema?

EDITAR He ejecutado la aplicación en Instrumentos de seguimiento de uso de memoria y veo que es bastante rock estable alrededor de 2 MB. Entonces, no pienses que es un problema de memoria. Pero después de considerarlo, esta roca estable de 2MB parece anormalmente baja. ¿Hay alguna posibilidad de que Instruments no esté recogiendo las asignaciones de CoreGraphics?


En mi caso, fue por una mala conexión de salida en el guión gráfico. Verifique usando punto de corte si se viewDidLoad método viewDidLoad de UIViewController que se UIViewController a cargar. De lo contrario, verifique sus conexiones de salida en el guión gráfico.

La conexión incorrecta bloquea la aplicación sin ningún error o rastro de la pila.

Me pregunto qué pasó con la this class is not key value coding-compliant for the key error this class is not key value coding-compliant for the key que solía mostrarse en las versiones anteriores de XCode.


En mi caso, fue porque tenía "Objetos Zombie" habilitados en el esquema para ayudar a encontrar el problema, lo que finalmente causó que se quedara sin memoria y fallara.


En mi caso, se debió a un objeto lanzado. Normalmente diría el mensaje enviado a la instancia desasignada o algo así, pero no fue así. Revisé los registros del iPhone y encontré esto: KERN_INVALID_ADDRESS, que busqué en Google y encontré esto: KERN_INVALID_ADDRESS

Habilitado objetos zombie y encontré que traté de usar una instancia desasignada. También me dijo qué objeto era en los registros después.

Espero que ayude a los futuros visitantes.


Intenta leer los registros.

Cada vez que mi aplicación se bloquea sin error, en la mayoría de los casos he encontrado la excepción en los registros.

Primero vaya a la pestaña Excepciones y ''Agregar punto de corte de excepción'' usando el signo + en la esquina inferior izquierda.

Luego, cuando la aplicación falla, haga clic en "0 objc_exception_throw" en el subproceso 1

Finalmente en la consola, ingrese:

  • registro de lectura (debe obtener una lista de registros)
  • po $ rax (normalmente la excepción está en ''rax'')

    (Debería ver el resultado de excepción en la consola)

Espero que esto ayude.


Súper tarde respuesta, pero he descubierto que usar try / catch ayuda a dar información cuando no puedo obtener un seguimiento de pila y mi aplicación saca un Keizer Soze.

@try { // suspected code causing crash/errors } @catch (NSException *exception) { NSLog(@"Exception: %@", exception); }