2011-09-16 5 views
5

Estoy usando manejadores de señal en una aplicación Objective-C para detectar errores fatales, como SIGSEGV, SIGBUS y similares.Xcode: GDB y manejadores de señal

Cuando se produce una señal de este tipo, estoy escribiendo un archivo de registro, con una traza inversa y detalles sobre el error (sé que puedo tener problemas de reentrada, pero ese no es el punto).

De esta manera, puedo saber en el siguiente lanzamiento que la aplicación se ha bloqueado, y puedo preguntarle al usuario si desea completar un informe de error.

Funciona bien cuando inicio la aplicación manualmente.

Pero cuando lo ejecuto desde Xcode (con GDB), los manejadores de señal no son llamados.

He intentado configurarlos con signal o sigaction, pero no hay diferencia.

También he comprobado con info signals que esas señales están configuradas en pass, lo que significa que deben pasarse a la aplicación.

Eso no es un gran problema, ya que solo tengo este problema cuando estoy depurando mi aplicación, pero será muy agradable tener que trabajar también con GDB.

¿Alguien ha experimentado y resuelto este problema?

+0

Puede intentar establecer estas señales para que no funcionen en gdb, por lo que la administra su aplicación. – steve

+0

Lo intenté antes de hacer la pregunta, pero supongo que cometí un error porque no funcionó. Lo intenté de nuevo hoy, y está funcionando como un encanto. Es posible que desee llenar una respuesta con esto, para que pueda aceptarlo. Gracias :) – Macmade

Respuesta

1

Es posible que desee intentar configurar estas señales para que no funcionen en gdb, por lo que la administrará su aplicación.

Cuestiones relacionadas