我已经为我的iOS应用程序编写了自己的崩溃处理程序 - 我之所以没有使用Flurry或Crashlytics等现有的崩溃处理程序并不重要。
我的问题是我无法调用默认信号处理程序或正常退出应用程序。相反,在应用程序崩溃之后,它会在最后一个屏幕上冻结,当它崩溃而不是退出应用程序时,如果我没有挂钩信号那么就会冻结。
我的崩溃处理程序很简单,工作正常。但是未调用默认处理程序或应用程序未关闭。
struct sigaction newSigAction; static struct sigaction oldSigAction; newSigAction.sa_sigaction = iOSSignalHandler; newSigAction.sa_flags = SA_SIGINFO; sigemptyset(&newSigAction.sa_mask); sigaction(SIGQUIT, &newSigAction, &oldSigAction); ... (more signals attached to) void iOSSignalHandler(int signal, siginfo_t *info, void *context) { // handle crash // then call default handler (*oldSigAction.sa_sigaction)(signal, info, context); }
我尝试调用exit(0),但是有更好的方法可以优雅地退出应用程序吗?
修改的
更准确地说,崩溃报告工具如何使FLurry和Crashlytics处理信号并退出应用程序,因为在我的情况下,尽管我调用它,默认信号处理程序仍然不会启动