9

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

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

2)这可以在可可中完成吗?还是我必须使用 Carbon 或 IOKit 之类的?

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

您对此有何想法和看法?

4

7 回答 7

3

我在UKCrashReporter上取得了很大的成功。该代码简单明了且易于修改以匹配您的应用程序的 L&F。

不过, PLCrashReporter看起来很有趣。

我会远离 Smart Crash Reporter 只是因为许多用户(理所当然地)不欣赏您的应用程序将代码注入到意想不到的地方,并且它让我觉得这是一种脆弱的(在已发布的应用程序中使用可能很危险)的方法。

于 2009-07-10T18:27:34.960 回答
2

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

自己编写代码相当简单。策略一般是:

  • 捕捉适当的信号
  • 启动一个单独的崩溃报告应用程序,该应用程序位于您的应用程序包中
  • 然后,崩溃报告器应用程序会为您的应用程序找到最新的崩溃日志条目,并通过您想要的任何方法(POST、电子邮件等)将其发送给您
于 2009-07-10T18:35:10.563 回答
2

我也推出了自己的:SFBCrashReporter

我的博客上有一篇关于它的小帖子。

于 2009-07-11T02:55:02.507 回答
1

我见过一些应用程序使用Smart Crash Reporter或者它的一些变体。当您的应用程序崩溃时,它会弹出通常的 Apple 崩溃对话框,并带有一个额外的按钮,上面写着“发送给 Apple 和您”

于 2009-07-10T17:57:09.767 回答
1

我会回避 Smart Crash Reporter,原因是它对很多用户来说味道不好,并且是让您的应用程序(无论是否应得)PLCrashReporter 或 UKCrashReporter http://zathras 获得坏消息的好方法。 de/angelweb/sourcecode.htm 他们将给出一些关于做什么以及如何以不注入其他代码空间的方式来做的想法。

于 2009-07-10T18:15:19.730 回答
1

另一种选择是谷歌的Breakpad。它有一个 Cocoa 框架包装器,并且与 Mozilla 的Socorro服务器兼容。它被 Firefox 使用,而 Cocoa 框架被用于当前的 Camino 测试版中。客户端集成非常简单,但我从未研究过运行 Socorro 服务器实例需要什么。

于 2009-07-10T23:01:01.820 回答
0

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

于 2010-02-28T09:12:27.237 回答