iOS的崩溃分析和报告

我们正在评估针对iOS应用崩溃报告的第三方解决scheme或自定义解决scheme。 我们正在看Crashlytics,BugSense,Testflight。 他们似乎都服务于这个目的,即实时崩溃报告。 另外,我们一直在寻找自定义的解决scheme,沿着Xcode 4.2的方式实现debugging,并不是象征性地调用堆栈

2个问题:

  1. 第三方解决scheme(Crashlytics,BugSense等)是否比自定义解决scheme更具优势,因为我们希望将其用于崩溃报告的唯一目的?
  2. 我们可以将多lessfunction添加到自定义exception处理程序中,例如,如果我想使用HTTP POST将堆栈跟踪发布到服务器,我可以在exception处理程序中执行此操作,还是需要等待直到我的应用程序下一次启动发送日志? exception处理程序应该多久退出?

谢谢,Hetal

你不应该做自己的崩溃报告解决scheme,而是使用现有的解决scheme,因为写一个可靠和安全的崩溃记者是很难的。 PLCrashReporter的开发者Landon Fuller解释了为什么在这篇文章中: 可靠的崩溃报告

通常在发生崩溃时运行任何非asynchronous安全的代码,应该避免不惜代价! 这意味着任何Objective-C代码都必须被避免。 这也意味着你的崩溃报告只能在下次发布时发送到你的服务器。 你也不应该依赖于默认的使用PLCrashReporter的第三方框架,因为框架所做的任何事情都应该以asynchronous安全的方式来实现。

编写自己的exception处理程序几乎不会像基于PLCrashReporter的任何东西那样详细,好,可靠。

除了您提到的第三方解决scheme之外,还有QuincyKit (基于PLCrashReporter和基于PHP的基本服务器解决scheme)的开源解决scheme,以及可以与QuincyKit客户端一起使用的HockeyApp。 (注:我是这两个解决scheme的开发人员之一)