首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QuincyKit/PLCrashReporter:在崩溃前*提供描述

QuincyKit/PLCrashReporter:在崩溃前*提供描述
EN

Stack Overflow用户
提问于 2012-07-21 08:21:50
回答 2查看 710关注 0票数 2

我正在使用运行在PLCrashReporter之上的QuincyKit来发现我的iOS应用程序中的生产崩溃,并获取日志。有时,如果我有一些来自崩溃点以上几个调用堆栈级别的变量,这将极大地帮助我进行调试。例如,如果记录处理代码是多级嵌套深度,那么它崩溃在哪个记录ID上。

问题是-有没有一种方法可以提供某种上下文字符串,在生成时作为描述插入到崩溃日志中?我会在进入调用堆栈时将其设置为记录,在退出时将其清除。如果它是非持久性的(即在内存中)就更好了--我担心一直写到非易失性存储器会消耗电池。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-21 22:42:25

找到了一个有限的解决方法。我使用一个名称来自包ID的shared memory block来存储上下文字符串。在适当的关机时,将清除该块。然后,我在Quincy委托中重写-crashReportDescription,以便它提供共享内存内容(如果有的话)作为描述。只有当上一次应用程序关闭是崩溃时,它才是非空的。

这种方法显然存在缺陷。比方说,如果他们在崩溃和下一次应用启动之间重启设备,那么共享内存信息就会丢失。

编辑:在设计的第一个版本中,我使用了一个私有的、名为UIPasteboard的内存,而不是共享内存。事实证明,这对性能造成了相当大的影响。共享内存的速度要快几个数量级。

EDIT2:但是后来他们破坏了iOS 7的共享内存,所以UIPasteboard又回来了。真扫兴。

EDIT3:我发现了另一种方法,不太优雅,但它在iOS 7中有效。我将上下文字符串存储在一个普通的静态内存块中。我使用[[PLCrashReporter sharedReporter] setCrashCallbacks:]在PLCrashReporter中放置了一个自定义的崩溃处理程序。在处理程序中,我将所述上下文(如果有的话)写到一个文件中。在应用程序启动时,我读取了上述文件,并在-crashReportDescription中提供了内容(如果有)。滚开,UIPasteboard。

票数 1
EN

Stack Overflow用户

发布于 2012-07-21 13:48:19

不,但是feature was proposed over 2 years ago还有一个补丁。

实际上,我更喜欢允许记录环形缓冲区内容的版本(您可以有效地将消息记录到其中!),这看起来可能更有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11588474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档