2014-09-06 80 views
3

根據我的理解,當iOS應用程序崩潰時,系統會創建一個可通過XCode訪問的.crash文件。是否有可能從應用程序本身以編程方式讀取此文件?以編程方式讀取iOS應用程序.crash文件?

我的意圖是將此崩潰日誌(如果存在)發送到服務器,以便我們可以在沒有用戶干預的情況下分析日誌。有幾個崩潰報告服務(例如bugsense,crashlytics)能夠做到這一點,所以我假設一個自定義實現應該是可能的?

乾杯!

+1

可能是你正在尋找一些工具,如http://www.crittercism.com/ – Rajesh 2014-09-06 09:32:23

+0

是的,我正在尋找這種工具,但我想知道更多的自定義實現是可能的,以及如何去做吧。 – Andree 2014-09-06 09:34:30

+0

默認情況下,如果您使用內部版本上傳了dysm文件,那麼它將使用堆棧跟蹤將電子郵件發送到配置的電子郵件地址,而不是您獲得有關崩潰的更多細節。在http://docs.crittercism.com/ios/ios.html可以查看現有的應用程序是很容易的 – Rajesh 2014-09-06 09:37:02

回答

6

無法從您的應用程序中讀取iOS系統生成的崩潰報告。原因是您的應用程序在沙箱中運行,並且無法訪問其沙箱外的任何內容。因此,如果您嘗試從不在沙盒內的路徑讀取文件或目錄,則不會獲得任何數據。

獲取崩潰報告的唯一方法是將代碼庫添加到代碼中,以便能夠檢測崩潰,創建報告並以某種方式發送報告。由於通過電子郵件收到數以千計的崩潰報告並不是非常有效,因此大多數人都會將其發送到服務器,同時考慮所需的符號過程以獲取類,方法和行號信息。

一個流行的和安全的使用開源庫是PLCrashReporter。大多數服務使用這一個,少數編寫自己的功能來實現功能。有一個開源應用程序可用於比較不同的崩潰報告服務和名爲CrashProbe(免責聲明:我是其開發人員之一)的庫。該項目有一個網站http://crashprobe.com與已經比較的服務列表。

還需要注意的是,擁有一個特定的崩潰報告庫對於良好的崩潰報告是不夠的,因爲符號化過程需要能夠翻譯崩潰報告中的信息以指向正確的類名,方法名稱,文件名和堆棧跟蹤中每個幀的行號。

我建議您比較看起來適合您的需求的服務(也使用CrashProbe),然後決定哪一個最適合您的用例。

我不會推薦任何服務,因爲這是不允許根據stackoverflow guidelines

相關問題