将自定义数据包含到iOS崩溃转储中

时间:2011-12-13 12:02:19

标签: ios error-handling crash-dumps

Hello Stack Overflow!

一个简单的问题:是否有可能将自定义错误数据嵌入到我的应用程序在其设备上崩溃时从用户处获得的自动生成的iOS崩溃转储中?

例如:我的SQlite数据库由于某种原因(例如,数据库文件已损坏)将无法运行。我无法从此错误中恢复,因此我抛出异常,并在异常中嵌入详细的sqlite错误消息。问题是,应用程序的崩溃转储不会包含异常消息,因此要知道应用程序崩溃的条件并不容易。

有没有人知道将事情放入崩溃转储报告的方法?或者您是否有任何其他建议的方式向开发人员报告生产崩溃?

谢谢!

2 个答案:

答案 0 :(得分:30)

不,您无法将自己的数据添加到崩溃报告中。由于沙箱,也无法自动访问iOS生成的崩溃报告。

所以我的建议如下:

  1. 要记录您自己的数据,请使用Cocoalumberjack。它比NSLog或其他日志框架快得多,并且可以选择将消息记录到文件中。现在,当发生异常时,或者在您想要的任何其他情况下,将其记录到文件中。但是,如果您的应用程序在您将某些内容添加到日志文件中的位置崩溃,则很可能会丢失,因为该应用程序在同一时刻崩溃。

    因此,安全地捕获确切的SQL语句是不可能的。但崩溃报告应该为您提供足够的信息来了解正在发生的事情,并添加您之前完成的记录。例如。您可以在执行SQL之前记录以SQL方式使用的搜索字符串。

    一般情况下尽量不要记录太多。

  2. 对于捕获崩溃报告,除了基于开源框架PLCrashReporter的解决方案之外,您应该只有当{app}已经在应用商店中时safely能够发现崩溃的解决方案!不建议使用异常捕获,请查看this article以查看原因!

    iTunes Connect也可以让你查看一些崩溃报告,但是看一些崩溃报告需要2周时间,但到目前为止并不是全部。由Camera+ developers指出。所以你最好使用自己的解决方案。

    PLCrashReporter将向您发送标准的Apple格式崩溃报告,准备进行符号化,以便您知道代码中发生崩溃的位置,包括行号。

    基于PLCrashReporter的一些解决方案是:

    • QuincyKit:开源客户端+ php服务器,基本崩溃分组,符号化可以从你的mac自动化(我是开发者)
    • HockeyApp:付费服务,使用QuincyKit客户端,高级崩溃分组,在服务器上完全完成符号化(我是开发人员)
    • Bugsense:免费服务,符号宣布为高级功能
    • AppBlade:付费服务,未知符号
    • Crashlytics:私有测试版,未知功能,其解决方案似乎基于PLCrashReporter
  3. 建议的解决方案允许在下次启动时自动发送数据,或者询问用户是否同意发送数据。

答案 1 :(得分:2)

免责声明 - 按照常见问题解答:我是AppBlade的开发人员。

AppBlade允许您在2012年12月之前发送自定义参数以及符号化崩溃报告。

看看吧! http://blog.appblade.com/news/2012/12/appblade-sdk-update-sessions-and-queues/