2017-02-20 45 views
4

我有一個用Xcode 8.2.1編寫的Swift 2中的iOS應用程序,它是爲iOS 10.2構建的。如何將fatalError消息保存到iOS崩潰日誌中?

我已經從TestFlight獲取了大量崩潰報告,儘管象徵性,崩潰日誌沒有顯示除堆棧跟蹤(沒有參數值,沒有本地人,沒有堆對象等)以外的任何程序狀態。

...但在這些函數內部,我可以看到可能失敗的代碼(例如強制解包),但是崩潰日誌並不告訴我它在哪裏或爲什麼失敗。

當在Xcode調試時,我可以使用fatalError(message: String)在那裏我可以把我自己的消息像"functionFoo returned nil""variable bar == \"" + bar + "\"",除了使用TestFlight或App Store展開時fatalError將受到重創,程序終止,但message值不保存到崩潰日誌中,使其毫無意義。

在其他環境中,如C#/。NET和Java,我可以簡單地使用throw new SomeExceptionType("my message"),並且我擁有的任何全局處理函數都可以使用所有信息。

如何在iOS/Swift中實現相同的目標?

+0

你有沒有找到方法? –

回答

0

要存儲,您可以更改所有的fatalError調用類似以下的自定義方法的調用內部錯誤消息:

public func internalCriticalError(_ message: String = "") -> Never { 
    // Save the message in a crash log here 
    // ... 

    fatalError(message) 
} 

不幸的是這種解決方案並不包括第三方的致命錯誤醒目。