检测我的Mac应用程序是否崩溃,然后继续正常崩溃

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检测我的Mac应用程序是否崩溃,然后继续正常崩溃相关的知识,希望对你有一定的参考价值。

[通常,当Mac应用收到崩溃信号,例如SIGSEGVSIGILL时,该过程将停止,几秒钟后,操作系统会以某种方式创建崩溃报告文件并告知用户。但是,如果我使用sigaction处理程序拦截信号,则不会发生这种正常行为。我想做的是检测崩溃发生的时间,使用在信号处理程序中可以安全调用的少数函数做一些工作,然后以正常方式继续崩溃。有没有办法做到这一点?我尝试在信号处理程序中重新引发信号,但这没有做正确的事情。

答案

通过像这样结束信号处理程序,通过默认处理重新发送信号,我几乎可以得到我想要的行为:

signal( inSignal, SIG_DFL );
pthread_kill( pthread_self(), inSignal );
usleep( 10000 ); /* give time for signal to happen */

通过Apple's source code查看abort()可以帮助我弄清楚这一点。

以上是关于检测我的Mac应用程序是否崩溃,然后继续正常崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Apple Watch 崩溃检测

如何使用 swift 检测应用程序崩溃?

用于Mac / Linux崩溃的Windows getch()相当于

保存太多新的 NSManagedObjects 时 Mac OS 应用程序崩溃

无论是不是启用权利,Mac 应用程序都会崩溃(因权利而死)

jogamp:MAC机,有的能正常运行,有的直接崩溃