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

4
根据我的理解,当iOS应用程序崩溃时,系统会创建一个.crash文件,可以通过Xcode访问。是否可能从应用程序本身编程方式读取此文件?
我的意图是发送此崩溃日志(如果存在)到服务器,以便我们可以在不需要用户干预的情况下分析日志。有几个崩溃报告服务(例如bugsense、crashlytics)能够做到这一点,因此我认为自定义实现应该是可能的?

1
也许你正在寻找类似于http://www.crittercism.com/的一些工具。 - Rajesh
是的,我正在寻找那种工具,但我更想知道是否可以进行自定义实现以及如何实现。 - Andree
默认情况下,如果您已上传了带有构建的dysm文件,则会将电子邮件发送到配置的电子邮件地址,并附带堆栈跟踪,以获取有关崩溃的更多详细信息。将其添加到现有应用程序非常容易,您可以在http://docs.crittercism.com/ios/ios.html上进行检查。 - Rajesh
1个回答

7
无法从应用程序内部读取iOS系统生成的崩溃报告,因为您的应用程序在沙盒中运行,并且无法访问其沙盒之外的任何内容。因此,如果您尝试从不在您的沙盒内的路径读取文件或目录,则不会获取任何数据。
唯一的选择是在您的代码中添加一个库,该库能够检测崩溃、创建报告并以某种方式发送它们。大多数服务都使用这个流行且安全的开源库PLCrashReporter,少数编写自己的功能来实现此功能。有一个名为CrashProbe的开源应用程序可用于比较不同的崩溃报告服务和库(免责声明:我是其中之一的开发人员)。该项目在http://crashprobe.com上拥有一个网站,列出了已经进行比较的服务。
重要的是要注意,仅有特定的崩溃报告库并不足以获得良好的崩溃报告,因为符号化过程需要能够将崩溃报告中的信息转换为正确的类名、方法名、文件名和每个堆栈跟踪中的行号。
我建议使用CrashProbe比较适合您需求的服务,然后决定哪一个最适合您的用例。
我不会推荐任何服务,因为这违反了stackoverflow指南的规定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接