在OS X上,记录运行时以单声道崩溃

时间:2013-10-17 18:26:17

标签: mono xamarin monomac xamarin.mac plcrashreporter

我想知道我的应用程序“在野外”的任何和所有崩溃。我们可以使用AppDomain.CurrentDomain.UnhandledException轻松捕获托管异常。

偶尔我们会在非托管代码中崩溃(通过我们自己与本机库的交互,或者有时是因为滥用monomac或monomac本身的问题)。我想知道这些事情何时发生。

我绑定了plcrashreporter框架并将其添加到我的应用中。我在Xamarin.iOS个应用程序中使用崩溃记者阅读了discussion并实施了workaround

到目前为止,非常好 - 我可以使用崩溃记者,我的应用运行良好。但是,我似乎对实际被捕获的信号有限。

例如,SIGILLSIGABRT都会被崩溃报告者困住。崩溃报告将写入磁盘,并可在应用程序启动时回读。

但是,SIGSEGVSIGBUS不会被抓住。相反,我得到一个写入控制台的堆栈跟踪以及:

=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

因此,似乎Mac上的情况与iOS上的情况并不完全相同。解决方法允许崩溃报告器运行,但Mono在从非托管代码获取SIGSEGV时似乎没有提出SIGABRT。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

只有在连接调试器的情况下运行应用程序时才需要删除和重新分配SIGSEGVSIGBUS处理程序的解决方法

由于我们只对实时错误感兴趣,因此我们可以围绕代码使用PLCrashReporter启用#IF DEBUG