2013-10-17 64 views
3

我想知道我的應用程序在野外的任何和所有崩潰。我們可以使用AppDomain.CurrentDomain.UnhandledException輕鬆捕獲管理的異常。日誌記錄運行時在OS X上的單聲道崩潰

偶爾我們會在非託管代碼中發生崩潰(通過我們自己與本地庫的交互,或者有時由於濫用monomac或monomac本身存在問題)。我想知道這些情況何時發生。

我綁定了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。

任何想法?

回答

1

拆卸和重新分配SIGSEGVSIGBUS處理程序解決方法僅需要,從而與

由於我們只在現場錯誤感興趣調試器中運行的應用程序,我們可以圍繞代碼,以使PLCrashReporter#IF DEBUG