Cocoa应用程序的崩溃报告器

时间:2009-07-10 17:46:25

标签: objective-c cocoa user-experience

我正在开发针对Leopard及以上版本的Cocoa应用程序,我正在考虑添加一个崩溃记者(我想我的应用程序不会崩溃,但让我们在这里变得真实)。在我真正开始之前,我有一些主要的概念性问题。

1)这是如何在概念上发挥作用的,知道什么时候发生了崩溃并提出了记者?我是否正在运行寻找崩溃的守护程序,或者我是否要等到我的应用程序在下次报告时启动?

2)这可以在Cocoa中完成吗?或者我是否需要使用Carbon或IOKit或其他类似的东西?

3)这是一个好主意吗? Mac OS X已经有一个内置的崩溃报告器,但作为开发人员,我无法看到崩溃日志。坦率地说,我认为我的应用程序不会经常崩溃,但我只是不想天真但是这种事情。

您对此有何看法和意见?

7 个答案:

答案 0 :(得分:3)

我在UKCrashReporter取得了很大的成功。该代码非常简单,易于修改,以匹配您应用的L& F.

PLCrashReporter看起来很有趣。

我会远离Smart Crash Reporter,因为很多用户(理所当然)不喜欢你的应用程序将代码注入意想不到的地方,这让我感到非常脆弱(在发布的应用程序中使用可能很危险)。< / p>

答案 1 :(得分:2)

其他人已经很好地回答了这个问题,并指出了一些很好的示例代码。

自己编码非常简单。该策略通常是:

  • 抓住适当的信号
  • 启动一个单独的崩溃记者应用程序,它位于您的应用程序包中
  • 崩溃记者应用程序然后找到您应用程序的最新崩溃日志条目,并通过您想要的任何方式(POST,电子邮件等)发送给您

答案 2 :(得分:2)

我也推出了自己的:SFBCrashReporter

关于它有一个小post on my blog

答案 3 :(得分:1)

我看过一些应用程序使用Smart Crash Reporter或者其中一些变体。当您的应用程序崩溃时,它将显示通常的Apple崩溃对话框,其中包含一个额外的按钮,上面写着“发送给Apple和你”

答案 4 :(得分:1)

我会回避Smart Crash Reporter,因为它对很多用户有不好的品味,并且是一个很好的方法来为你的应用程序输入不良(理应与否)PLCrashReporter或UKCrashReporter {{3他们会以不注入其他代码空间的方式提供一些关于做什么以及如何做的想法。

答案 5 :(得分:1)

另一种选择是Google的Breakpad。它有一个Cocoa框架包装器,并与Mozilla的Socorro服务器兼容。它被Firefox使用,Cocoa框架用于Camino目前的测试版。客户端集成非常简单,但我从未考虑过如何运行Socorro服务器的实例。

答案 6 :(得分:0)

我正在使用ILCrashReporter,它的效果非常好。该方法基于电子邮件,因此适用于Fogbugz