以编程方式读取iOS应用程序.crash文件?

以编程方式读取iOS应用程序.crash文件?

问题描述:

根据我的理解,当iOS应用程序崩溃时,系统会创建一个可通过XCode访问的.crash文件。是否有可能从应用程序本身以编程方式读取此文件?以编程方式读取iOS应用程序.crash文件?

我的意图是将此崩溃日志(如果存在)发送到服务器,以便我们可以在没有用户干预的情况下分析日志。有几个崩溃报告服务(例如bugsense,crashlytics)能够做到这一点,所以我假设一个自定义实现应该是可能的?

干杯!

+1

可能是你正在寻找一些工具,如http://www.crittercism.com/ – Rajesh 2014-09-06 09:32:23

+0

是的,我正在寻找这种工具,但我想知道更多的自定义实现是可能的,以及如何去做吧。 – Andree 2014-09-06 09:34:30

+0

默认情况下,如果您使用内部版本上传了dysm文件,那么它将使用堆栈跟踪将电子邮件发送到配置的电子邮件地址,而不是您获得有关崩溃的更多细节。在http://docs.crittercism.com/ios/ios.html可以查看现有的应用程序是很容易的 – Rajesh 2014-09-06 09:37:02

无法从您的应用程序中读取iOS系统生成的崩溃报告。原因是您的应用程序在沙箱中运行,并且无法访问其沙箱外的任何内容。因此,如果您尝试从不在沙盒内的路径读取文件或目录,则不会获得任何数据。

获取崩溃报告的唯一方法是将代码库添加到代码中,以便能够检测崩溃,创建报告并以某种方式发送报告。由于通过电子邮件收到数以千计的崩溃报告并不是非常有效,因此大多数人都会将其发送到服务器,同时考虑所需的符号过程以获取类,方法和行号信息。

一个流行的和安全的使用开源库是PLCrashReporter。大多数服务使用这一个,少数编写自己的功能来实现功能。有一个开源应用程序可用于比较不同的崩溃报告服务和名为CrashProbe(免责声明:我是其开发人员之一)的库。该项目有一个网站http://crashprobe.com与已经比较的服务列表。

还需要注意的是,拥有一个特定的崩溃报告库对于良好的崩溃报告是不够的,因为符号化过程需要能够翻译崩溃报告中的信息以指向正确的类名,方法名称,文件名和堆栈跟踪中每个帧的行号。

我建议您比较看起来适合您的需求的服务(也使用CrashProbe),然后决定哪一个最适合您的用例。

我不会推荐任何服务,因为这是不允许根据stackoverflow guidelines