[iphone] iOS崩潰日誌捕獲,調試信息..通過電子郵件捕獲並發送給開發團隊



Answers

  1. 要記錄您自己的數據,請使用Cocoalumberjack 。 它比NSLog快得多,可以動態打開/關閉。 它還提供將數據保存到文件中的選項。 NSLog將減慢您的應用程序並填充控制台日誌。 另外,您通常不希望記錄太多。 發生崩潰時,您無法安全地進行日誌記錄。 所以,一旦你弄清楚問題區域在哪裡,在那裡添加一些日誌並嘗試重現它,例如通過使用像KIF這樣的自動化測試框架。

  2. 對於捕獲崩潰報告,除了基於開源框架PLCrashReporter的解決方案之外別無其他,它可以safely捕獲崩潰,當您的應用程序已經在應用程序商店中時! 不推薦像其他人建議的異常捕獲,請查看safely以了解原因!

    iTunes Connect也可以讓您查看一些崩潰報告,但是需要2週才能看到一些崩潰報告,但到目前為止並不是全部,例如Camera +開發人員所指出的。 所以你最好使用自己的解決方案。

    PLCrashReporter將向您發送標準的Apple格式崩潰報告,準備進行符號化,以便您知道代碼中發生崩潰的位置,包括行號。

    一些基於PLCrashReporter的解決方案是:

    • QuincyKit :開源客戶端+ php服務器,基本崩潰分組,符號化可以從你的mac自動化(我是這個的開發者)
    • HockeyApp :付費服務,使用QuincyKit客戶端,高級崩潰分組,完全在服務器上完成符號(我是開發人員)
    • Bugsense :免費服務,沒有符號
    • AppBlade :免費服務,如果使用25台或更少的設備,沒有符號
    • Crashlytics :私人測試版,未知功能,他們的解決方案似乎基於PLCrashReporter
  3. 建議的解決方案允許在下次啟動時自動發送數據,或者詢問用戶是否同意發送。

Question

最近我們遇到了一種情況,我們希望從應用程序中看到用戶在其設備上的調試信息。 所以,我正在尋找的是一種在設備上查找日誌的方法,將其粘貼為郵件上的內聯文本並允許用戶發送它。

有任何想法嗎? 以下是問題.1)在設備上查找調試日誌2)打開文件並將文件內容作為內聯文本附加到郵件中。 3)允許用戶在下次啟動應用程序時通過電子郵件發送..

謝謝,




這是一個能夠在發生崩潰時捕獲崩潰的解決方案,它將提供比崩潰日誌更多的人類可讀代碼信息。 它將缺少一些崩潰日誌,但正如Till所說,無論如何你應該能夠訪問它們。

從另一個關於Xcode 4.2的SO問題總是在崩潰時返回main。 那裡的答案使用這種方法,你可以擴展它以跟踪崩潰。

在AppDelegate中實現自己的異常處理程序

// on load
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);

void uncaughtExceptionHandler(NSException *exception) {
    NSLog(@"CRASH: %@", exception);
    NSLog(@"Stack Trace: %@", [exception callStackSymbols]);
    // Internal error reporting
}

更新我做了一些回溯,這個解決方案是由Zane Claes提供的問題Xcode 4.2 debug不符號堆棧調用

他在第二次評論中提供了一般性解決方案。 “我發現將崩潰日誌寫入文件並提示用戶在下次啟動時提交它(僅在發布模式下,不妨礙調試)是有用的。這讓我得到了很好的錯誤報告。 ..並且用戶知道他們的問題正在得到解決“我明白並不是每個人都想問這個用戶,但是有超級用戶會很高興幫忙。

你當然可以包括一個永不告訴我這個提示再次按鈕,這樣人們就不會因為報告機製而感到沮喪。

或者,您可以使用該信息與服務器聯繫(不確定它是否會在崩潰時工作,但保存它並偶爾嘗試使用詳細信息POST到服務器)




有關Apple提供的免費實用程序,請參閱如何從iphone .app文件查看NSLog語句中的 Ryan的答案。

但這仍然沒有方便的解決方案。 如果您負擔得起新版本,則應在應用程序中更改日誌記錄。 Jano在如何將NSLog轉換為文件方面有一些非常好的想法。 特別是選項2應該沒有太多的努力。

一般來說,無論使用何種編程語言,我都建議在項目開始時將本機日誌工具隱藏在外觀或類似設計之後。




BugSense為iOS提供崩潰報告服務。 除了提供完全符號化的堆棧跟踪,BugSense還可以為您的所有應用程序中的崩潰提供分析。

我認為它比電子郵件更好,因為當您的應用程序變得流行時,您需要手動管理所有這些電子郵件,而BugSense會自動執行此操作。 但是,BugSense也是開源的,因此您可以以任何方式修改其內部,並添加任何其他功能。

除此之外,你讓我們免費為你工作:如果你對我們想要的一個很酷的新功能有所了解,我們會做 - 我們認為它也很酷。

免責聲明:我為BugSense-iOS.framework編寫代碼。




Related