你好,堆栈溢出!
有一个简单的问题要问您:当我的应用程序在用户的设备上崩溃时,是否可以将自定义错误数据嵌入到自动生成的 iOS 故障转储中?
例如:我的 SQlite 数据库由于某种原因无法运行(例如,数据库文件已损坏)。我无法从这个错误中恢复,所以我抛出一个异常,并在异常中嵌入详细的 sqlite 错误消息。问题是,应用程序的故障转储不会包含异常消息,因此不容易知道应用程序在什么情况下崩溃。
有谁知道如何将内容放入故障转储报告中?或者您有其他推荐的方式向开发人员报告生产崩溃吗?
Thanks !
不可以,您不能将自己的数据添加到崩溃报告中。由于沙箱的原因,也不可能自动访问 iOS 生成的崩溃报告。
所以我的建议如下:
-
要记录您自己的数据,请使用可可伐木工 https://github.com/robbiehanson/CocoaLumberjack。它比 NSLog 或其他日志框架快得多,并且可以选择将消息记录到文件中。现在,当发生异常时,或者任何您想要的时候,将其记录到文件中。但是,如果您的应用程序在您将某些内容添加到日志文件时崩溃,那么它很可能会丢失,因为应用程序在同一时刻崩溃了。
因此,安全地捕获确切的 SQL 语句是相当不可能的。但是崩溃报告应该为您提供足够的信息来了解正在发生的情况,以及您之前记录的已完成的操作。例如。您可以在执行 SQL 之前记录 SQL 方式中使用的搜索字符串。
一般来说,尽量不要记录太多。
-
为了捕获崩溃报告,您应该选择基于开源框架的解决方案PLC故障报告器 http://code.google.com/p/plcrashreporter/, 哪个行safely http://landonf.bikemonkey.org/code/objc/Reliable_Crash_Reporting.20110912.html捕获崩溃,当您的应用程序已经在应用程序商店中时也是如此!不建议捕获异常,检查本文 http://landonf.bikemonkey.org/code/objc/Reliable_Crash_Reporting.20110912.html看看为什么!
iTunes Connect 还允许您查看一些崩溃报告,但需要长达 2 周的时间才能看到一些报告,但到目前为止还不是全部。指出由相机+开发者 http://taptaptap.com/blog/cameraplus-2-3-1-available-attack-of-the-crashinator/。所以你最好使用你自己的解决方案。
PLCrashReporter 将向您发送标准苹果格式的崩溃报告,准备好进行符号化,以便您知道代码中发生崩溃的位置,包括行号。
基于PLCrashReporter的一些解决方案是:
-
昆西·基特 http://quincykit.net:开源客户端 + php 服务器,基本的崩溃分组,符号化可以在你的 mac 上自动化(我是这个的开发者)
-
曲棍球应用程序 http://hockeyapp.net:付费服务,使用 QuincyKit 客户端,高级崩溃分组,符号化完全在服务器上完成(我是这个的开发人员之一)
-
Bugsense http://bugsense.com:免费服务,符号宣布为高级功能
-
AppBlade http://appblade.com:付费服务,符号未知
-
崩溃解决方案 http://crashlytics.com:内测,功能未知,他们的解决方案似乎是基于PLCrashReporter
所提出的解决方案要么允许在下次启动时自动发送数据,要么询问用户是否同意发送。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)