诊断不可重现的错误?

我有一个非常基本的,但非常重要和可能不可能的问题:如何去诊断一个你不能重现的bug?

两次,我收到来自人们的电子邮件,询问我无法复制的应用程序崩溃错误。 未修改的iPhone,目前的软件,尝试重新安装和硬重置等,它每次都为他们崩溃,它对我来说是完美的(更不用说它首先批准的应用程序商店,所以我很清楚不是唯一的)。 我一直都明白,这些设备的一致性是苹果公司对开发人员的一大卖点,但是这也使得很难指出他们的设备与我的不同之处。

所以,除了“继续testing”之外,程序员之间是否有这种交易的诀窍呢? iPhone模拟器的一些function,可以让你testing不只是不同的屏幕尺寸,但不同的硬件configuration等? 或者我只是运气不好,而且坚持告诉我的客户“对不起,这对我有用”?

任何人都可以分享他们的经验或build议吗?

您应该首先安装一个像Crashlytics这样的崩溃报告工具。 这可能会给你你需要的线索,或者至less帮助你缩小在哪里把额外的崩溃logging。

虽然iTunes Connect崩溃报告可能会有所帮助,但像Crittercism这样的崩溃报告服务更加便于用户使用,function也更全面。 Crittercism对于追踪我的应用程序中偶尔发生的崩溃非常有用,可以免费使用。 (我和Crittercism没有关系。)

在iTunes Connect中,您可以访问崩溃报告。 这些崩溃报告包括可以用符号表示的调用堆栈,然后可以看到它实际崩溃的位置。

这里有一些很好的符号说明: symbolicating-iphone-app-crash-reports

保持每个构build和归档的dsym文件安全非常重要。 您可以使用它们来表示崩溃报告,以查看崩溃的详细信息。 用户将不得不select提交崩溃报告。 我认为这是iTunesConnect的一个function。