我想知道我的應用程序在野外的任何和所有崩潰。我們可以使用AppDomain.CurrentDomain.UnhandledException
輕鬆捕獲管理的異常。日誌記錄運行時在OS X上的單聲道崩潰
偶爾我們會在非託管代碼中發生崩潰(通過我們自己與本地庫的交互,或者有時由於濫用monomac或monomac本身存在問題)。我想知道這些情況何時發生。
我綁定了plcrashreporter框架並將其添加到我的應用程序。我已閱讀discussion周圍使用崩潰記者與Xamarin.iOS
應用程序和實施workaround。
到目前爲止,這麼好 - 我可以使用崩潰記者和我的應用程序運行良好。然而,我似乎對什麼信號實際上被捕獲有限。
例如,SIGILL
和SIGABRT
都被碰撞記者困住。崩潰報告寫入磁盤,並可在下次啓動應用程序時讀回。但是,SIGSEGV
和SIGBUS
不會被捕獲。相反,我得到寫入到控制檯堆棧跟蹤沿:
=================================================================
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。
任何想法?