我在 Objective-C 应用程序中使用信号处理程序来捕获 fatal error ,如 SIGSEGV
, SIGBUS
之类的。
当发出这样的信号时,我正在编写一个日志文件,其中包含有关错误的回溯和详细信息(我知道我可能会遇到可重入问题,但这不是重点)。
这样,我可以在下次启动时知道应用程序崩溃了,我可以询问用户是否要填写错误报告。
当我手动启动应用程序时,它工作正常。
但是当我从 Xcode(使用 GDB)运行它时,不会调用信号处理程序。
我试着用 signal
设置它们或 sigaction
,但没有区别。
我也查过 info signals
这些信号设置为 pass
,这意味着它们应该传递给应用程序。
这没什么大不了的,因为我只是在调试我的应用程序时遇到了这个问题,但是它也能与 GDB 一起工作会非常好。
有没有人遇到并解决过这样的问题?
最佳答案
您可能想尝试在 gdb 中将这些信号设置为 nostop,因此它由您的应用程序管理。
关于Xcode:GDB 和信号处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7451157/