gpt4 book ai didi

mono - 在 OS X 上记录运行时崩溃

转载 作者:行者123 更新时间:2023-12-02 10:45:28 26 4
gpt4 key购买 nike

我想了解我的应用程序“在野外”发生的所有崩溃情况。我们可以使用 AppDomain.CurrentDomain.UnhandledException 轻松捕获托管异常。

有时,我们会在非托管代码中崩溃(通过我们自己与 native 库的交互,或者有时由于滥用 monomac 或 monomac 本身的问题)。我也想知道这些何时发生。

我已绑定(bind)plcrashreporter框架并将其添加到我的应用程序中。我已阅读discussion围绕将崩溃报告器与 Xamarin.iOS 应用程序结合使用并实现了 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。

有什么想法吗?

最佳答案

仅当应用程序在附加调试器的情况下运行时,才需要删除和重新分配 SIGSEGVSIGBUS 处理程序的解决方法

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

关于mono - 在 OS X 上记录运行时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19434404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com