我在Objective-C应用程序中使用信号处理程序来捕获致命错误,如SIGSEGV
,SIGBUS
等。
当发出这样的信号时,我正在写一个日志文件,带有回溯和错误的详细信息(我知道我可以有重入问题,但这不是重点)。
这样,我可以在下次启动时知道应用程序已崩溃,我可以询问用户是否要填写错误报告。
我手动启动应用程序时效果很好。
但是当我从Xcode(使用GDB)运行它时,不会调用信号处理程序。
我尝试使用signal
或sigaction
设置它们,但没有区别。
我还检查了info signals
这些信号是否设置为pass
,这意味着它们应该传递给应用程序。
这不是什么大不了的事,因为我在调试我的应用程序时只遇到了这个问题,但是将它与GDB配合使用会非常好。
有没有人经历过并解决过这样的问题?
答案 0 :(得分:1)
您可能想尝试将这些信号设置为gdb中的nostop,因此它由您的应用程序管理。