2009-07-10 77 views
9

我正在研究一款針對Leopard及以上版本的Cocoa應用,並且我正在考慮向其添加崩潰記者(我想我的應用不會崩潰,但讓我們來看看真正在這裏)。在我真正開始之前,我有一些主要是概念性的問題。Cocoa應用崩潰記者

1)從概念上說,這是如何工作的?知道何時會發生碰撞並引發記者?我有一個守護進程正在尋找崩潰,還是等到我的應用下次啓動時才報告?

2)這可以在可可嗎?或者我會不得不陷入碳或IOKit或其他?

3)這是一個好主意嗎? Mac OS X已經有一個內置的崩潰記者,但作爲開發人員,我無法看到崩潰日誌。坦率地說,我認爲我的應用程序不會經常崩潰,但我只是不想天真,但這種事情。

對此有什麼想法和意見?

+1

有沒有人像2013年回答這篇文章?所有的答案都相當過時,但問題仍然超過了相關... – 2013-10-25 08:27:00

回答

4

我與UKCrashReporter取得了很多成功。該代碼很直接,很容易修改以匹配應用程序的L & F.儘管如此,

PLCrashReporter看起來很有趣。

我會遠離Smart Crash Reporter,僅僅因爲許多用戶(理所當然地)不喜歡你的應用程序將代碼注入到意想不到的地方,它使我感到脆弱(在發佈的應用程序中使用可能很危險)。

+0

您是否介意更新2013年的答案?我不會感到驚訝,你的新答案可能完全不同。 – 2013-10-26 11:34:58

1

我已經看到一些應用程序使用Smart Crash Reporter或者它的一些變體。當你的應用程序崩潰時,它會出現通常的蘋果崩潰對話框,並帶有一個額外的按鈕,其中顯示「發送給蘋果公司和你」

1

我會迴避智能崩潰記者,因爲它有一個不好的味道對於很多用戶來說,並且是一種很好的方式來爲您的應用程序獲得糟糕的新聞(無論是否應該),PLCrashReporter或UKCrashReporter http://zathras.de/angelweb/sourcecode.htm他們會提供一些有關如何做以及如何以不注入其他方式進行操作的想法代碼空間。

2

其他人已經很好地回答了這個問題,並指出了一些很好的示例代碼。

自己編碼非常簡單。該策略一般爲:

  • 捕捉適當的信號
  • 推出一個獨立的崩潰報告的應用程序,應用程序的包裏面住
  • 崩潰報告應用程序,然後找到你的應用程序最新的故障日誌條目,並把它發送到你可以通過你想要的任何方式(POST,電子郵件等)
1

另一種選擇是谷歌的Breakpad。它有一個Cocoa框架包裝器,並且與Mozilla的Socorro服務器兼容。它被Firefox使用,並且Cocoa框架被用於Camino的當前版本。客戶端集成非常簡單,但我從未考慮過運行Socorro服務器實例需要多少時間。

2

我還推出我自己的:SFBCrashReporter

有一個小post on my blog了。

+1

我已經在我的應用中使用過這個,並且對它很滿意。但是,當前版本是爲支持GC的應用程序而設計的,因此將其用於非GC應用程序需要進行少量調整。我也試過UKCrashReporter,但更喜歡這個。 – hasseg 2010-01-15 10:29:08

0

我使用的是ILCrashReporter,它的工作原理非常好。該方法基於電子郵件,因此可與Fogbugz配合使用。

+0

ILCrashReporter不在雪豹上工作......任何線索? – Devarshi 2010-06-11 11:24:22