原文链接: http://inessential.com/2015/06/10/how_not_to_crash_8_infrastructure
即使你觉得自己的app是无故障的,你也需要收集崩溃日志 —— 因为没有什么是无故障的:只有 已知 的崩溃bug是可以避免的。
有一些做这类事情的服务,我尝试过的还都不错,所以我在这里就不做特别推荐了。
有几点功能是它应该具备的:
- 崩溃日志被收集的过程,不需要用户手动查找它们再发送给你。它应该是自动化的(如果在OS X上,用户可能会收到提示;而在iOS上没人会希望被弹窗)。
- 要有给崩溃日志分组的机制,你得到的应该是每一组的汇总,这样你就能知道哪些经常出现,哪些不经常出现。
- 要能够给一组问题标记为已解决。
当然,仅仅收集崩溃日志是远远不够的。你应该定期查看它们。(我每天早上查看崩溃日志。)
Bug跟踪器
要有一个。
对于我私人的项目,我会综合使用Lighthouse,OmniOutliner和纸笔 —— 当然你可以使用任何工具,只要你的崩溃记录归总到你的bug跟踪器里面而不会遗失。
(Lighthouse是个不错的bug跟踪器。我喜欢用OmniOutliner来标记大的新功能或者完整的app,在那里我可以建立to do的事件树。对于短周期的事情 —— 比如完成一个10步就可以完成的任务 —— 我喜欢用纸笔,因为依赖短期记忆很让人疲倦,而纸笔不会干扰屏幕上的上下文环境。)
错误和警告
Xcode默认不会打开足够的错误和警告。我强烈推荐 Peter Hosey的集合 。
关键是要移除你代码中的 不确定性 。
就像我推荐的,我更进一步:我像对待错误一样对待警告。是的,这就意味着,如果警告存在我甚至不能在本地debug —— 但是这条守则物有所值。它意味着无论何时,只要我的app在运行,就不存在任何警告。
Instruments
Instruments非常棒。查看你的app分配了多少的内存是个好主意,同时,查看内存泄漏也是非常重要的。
如果你的app崩溃了,使用Zombies工具是个好主意。你的问题可能和zombies并没有关系,但是在怀疑的过程中,排除法是很值得使用的。