2009-12-04 44 views
2

我想知道如何在生產應用程序中嵌入CrashCatcher框架(http://code.google.com/p/plcrashreporter)。我已經編寫了一些代碼,將直接上傳到服務器的崩潰報告。而且,我的意圖是更快地訪問崩潰報告,而不需要通過Apple/iTunes來獲取它們。iPhone Crash在發佈的應用程序上捕捉選項

有誰知道嵌入CrashCatcher框架是否可能通過應用程序審查過程?而且,如果是這樣,它是否可能導致與Apple在iTunes/iTunesConnect中內置的故障捕獲機制有任何問題或衝突?

想法?

回答

3

我與CrashReporter,Landon(謝謝!)的作者之一通信,提供了一些額外的解釋。顯然,CrashReporter(信號)和Apple的碰撞捕捉(Mach例外)所使用的機制是截然不同的,並且是相互兼容的。

你明白蘋果是如何捕獲崩潰VS CrashReporter始終之間的區別是什麼?我沒有仔細研究過CrashReporter的源代碼,但是從我讀/記的它註冊信號處理程序起作用?這是否準確?

右鍵 - PLCrashReporter註冊標準的信號處理的信號,它的興趣: http://code.google.com/p/plcrashreporter/source/browse/trunk/Source/PLCrashSignalHandler.m#41 http://code.google.com/p/plcrashreporter/source/browse/trunk/Source/PLCrashSignalHandler.m#223

你知道,如果蘋果利用不同的機制?

Apple利用Mach異常處理程序在Mac OS X和iPhone上實現其崩潰報告;可以通過異常服務器(進程內或進程外部)處理異常處理程序 - 默認的內核提供的UNIX異常處理程序將異常處理映射到UNIX信號。

UNIX的異常處理程序在這裏註冊: http://fxr.watson.org/fxr/source/bsd/kern/bsd_init.c?v=xnu-1456.1.26#L999

對於崩潰報告,馬赫例外API的好處是,你可以簡單地直接傳遞到下一個處理未修改的例外。我調查了早期的實現,但必要的API是私有的[1],因此在註冊標準的UNIX信號處理程序時得到了解決。如果您想了解更多關於Mach例外系統的信息,我建議從Mac OS X內核的第9章第7節開始。

乾杯, 蘭登

[1]團結3D最近運行通過exc_server()與馬赫例外私有API的問題:我使用了一個名爲Crittercism服務 http://blogs.unity3d.com/2009/11/14/unity-iphone-app-store-submissions-problem-solved/

+0

讀者可能也想知道這個包含內置崩潰報告系統的應用程序模板項目.http://petersteinberger.com/2010/12/presenting-a-better-template-for-ios-apps-psiosapptemplate / – xyzzycoder 2011-02-17 09:49:28

0

創建該框架的人在商店中獲得了大量應用程序。如果有人在生產應用中成功使用它,他們必須知道它。你應該嘗試聯繫:http://www.plausiblelabs.com/

+0

我上面引用的交互是作者。 – xyzzycoder 2011-02-17 09:46:44

0

它應該沒問題,但是你應該給用戶關於你是否發回崩潰報告的選擇。

當我們做到這一點時,我們預先填寫了一封電子郵件,當應用程序在崩潰之後啓動並使用適當的堆棧跟蹤。用戶可以選擇發送或不發送。

相關問題