HockeyApp或设备日志中不会出现难以重现的崩溃

时间:2014-08-22 13:20:08

标签: ios iphone xcode hockeyapp

两天前,我的一位iPhone游戏测试版测试人员在游戏玩法的特定点遇到了崩溃。 HockeyApp中没有出现崩溃报告(我已经看到了来自同一版本的其他报告)。

昨晚,我也遇到了车祸。不幸的是我没有连接到调试器。当我回到计算机时,我插入了我的设备,但没有发现新的崩溃日志。请注意,我的设备是在iOS8 Beta上,我尝试使用XCode5和XCode6来查找崩溃日志。

这次崩溃非常难以重现;在30多个小时的组合游戏中,它只发生了3次。这不是记忆问题;崩溃发生在游戏玩法的一个非常具体的位置,重新启动应用程序会导致另一个非常具体的症状......对我来说调试不够具体;)

我之前已经读过HockeyApp等抓住崩溃日志的方式,但我必须承认缺乏专业知识。是什么原因导致日志丢失? HockeyApp以某种方式"消费"它,还是从来没有创造过呢?

更重要的是,我该如何追踪这个问题?

1 个答案:

答案 0 :(得分:8)

这是来自HockeyApp的Andreas。

让我先谈一些一般性评论:

  1. 如果发生崩溃或iOS杀死了应用程序(技术上没有崩溃),那么iOS将始终将崩溃报告写入设备,但有一个例外:如果设备被拒绝同步Apple的使用和崩溃数据只会存储有限数量的报告,而只会在控制台中打印报告。

  2. 第三方框架永远不会消费"崩溃使iOS无法生成报告。应用程序中的多个第三方框架可以检测未处理的异常,但只有一个框架可以检测由信号触发的崩溃。

  3. 使用默认设置的HockeyApp SDK无法检测崩溃,例如堆栈溢出引起的。这可以通过启用Mach异常来激活,请参阅http://hockeyapp.net/help/sdk/ios/3.5.6/Classes/BITCrashManager.html#//api/name/enableMachExceptionHandler

  4. HockeyApp SDK具有实验支持,可以通过iOS检测应用程序的某些类型。这也需要单独激活,请参阅https://github.com/bitstadium/HockeySDK-iOS/blob/develop/Classes/BITCrashManager.h#L224

  5. 如果没有iOS崩溃报告,就无法说明HockeyApp无法报告崩溃的原因。我对iOS没有在设备上显示崩溃报告的假设是设备上已经有太多崩溃报告并且同步被禁用。

    1. 将设备连接到Xcode
    2. 选择设备,然后再次检查设备上的崩溃报告。
    3. 模拟新的崩溃
    4. 再次检查是否存储在设备上。
    5. 检查控制台日志中是否有内容。
    6. 如果假设正确,则从设备中删除旧的崩溃报告,以便为新报告腾出空间。
    7. 获得该崩溃报告并通过支持与我们联系后,我们可以帮助您进行分析。