developer apple iphone xcode debugging exception

apple - ¿Cómo puedo averiguar qué excepción se lanzó en el depurador de Xcode(para iPhone)?



apple developer account (4)

Estoy aprendiendo la programación de iPhone de The iPhone Developer''s Cookbook de Erica Sadun. Cuando ejecuto la aplicación que creé siguiendo los pasos del Ejemplo de conversión de temperatura que comienza en la página 81 en el simulador, termina debido a una excepción no detectada. (Consulte http://groups.google.com/group/iphonesdk/browse_frm/thread/6f44a90fdb8da28a?hl=es para la pregunta que publiqué en el grupo de Google iPhoneSDK).

La excepción se produce después de llamar a UIApplicationMain () desde mi main (). Si miro el rastro de la pila en el depurador, todo lo que veo es (por supuesto) ensamblado. ¿Cómo averiguo qué tipo de excepción se lanzó?

Actualización :
Aprender los detalles de la excepción desde la consola del depurador fue suficiente para ayudarme a resolver el problema. (Ver http://groups.google.com/group/iphonesdk/browse_frm/thread/6f44a90fdb8da28a?hl=es .) objc_exception_throw que podía establecer un punto de corte simbólico en objc_exception_throw , pero no miré para ver si el backtrace desde allí habría sido útil.


Ponga un punto de interrupción en objc_exception_throw y ejecute su aplicación a través de Debug en lugar de ejecutar

Para aclarar, lo que estás viendo realmente cuando obtienes una excepción sin el punto de interrupción es siempre el mismo rastro de pila: es el manejador de excepciones no detectadas. El tipo de excepción se registra en la consola Ejecutar, pero si desea ver una traza inversa donde se generó la excepción, para eso está el punto de interrupción.


Como Kevin respondió, encontrará más información útil sobre la depuración configurando un punto de interrupción en objc_exception_throw .

Si está utilizando Xcode 4.2, puede agregar este punto de interrupción simbólico yendo a Breakpoint Navigator> Haga clic en el ícono de agregar en la esquina inferior izquierda> Agregar punto de corte simbólico> Ingrese objc_exception_throw para Símbolo> Listo.


En el nuevo Xcode (al menos a partir de v4.5), puede capturar todas las excepciones fácilmente al hacer esto:

  1. Mostrar el navegador de punto de interrupción (⌘6)
  2. Haga clic en + en la esquina inferior izquierda
  3. Agregar punto de interrupción de excepción

Creo que lo anterior es lo mismo que un punto de interrupción en objc_exception_throw . http://samwize.com/2012/09/26/xcode-4-dot-5-tips-and-tricks/