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

标签 ios crash-reports

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

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

最佳答案

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

获取崩溃报告的唯一选择是在您的代码中添加一个库,该库能够检测崩溃、创建报告并以某种方式发送它们。大多数将它发送到服务器,因为通过电子邮件获取数以千计的崩溃报告效率不高,同时还要考虑获取类、方法和行号信息所需的符号化过程。

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

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

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

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

关于ios - 以编程方式读取 iOS 应用程序 .crash 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25698830/

相关文章:

ios - setRightButton 上的应用程序崩溃。不知道为什么

ios - 内容可用推送通知在不调试时不调用委托(delegate)

iOS - 录制音频和播放

ios - Cordova - 从 iOS 本地调用插件的 JS 部分

iphone - 通过 ASIHTTPRequest 下载视频时崩溃?

android - 手动向 Android Vitals 报告崩溃

ios - 从 sqlite3_prepare_v2 失败。错误是 : out of memory

ios - Flash 中的动画到 IOS

iphone - NSURL URLWithString : raises exception

Android 通过 Crashlytics 发送完整的堆栈跟踪