-->

QuincyKit / PLCrashReporter:提供说明* *前崩溃(QuincyKit/P

2019-06-26 10:59发布

我使用QuincyKit,它运行在PLCrashReporter的顶部,发现在我的iOS应用崩溃的生产,并获得日志。 有时,它会极大地帮我调试,如果我有一些变量从碰撞点以上几种调用堆栈水平。 像什么记录ID没有它会崩溃,如果记录处理代码嵌套深的多层次。

现在的问题是 - 有提供某种上下文字符串的那个被插入到一个崩溃日志作为在生成时描述的方法吗? 我将它设置在进入一个调用堆栈的记录,我会清除它在退出时。 更好的,如果它的非持久性(即内存) - 写入非易失性存储所有的时间将电池进行征税,我害怕。

Answer 1:

否,但功能已2年多前提出 ,并有一个补丁。

其实我更喜欢的是允许登录的环形缓冲区的内容(你可以有效地记录消息!),这似乎是潜在有用得多版本。



Answer 2:

发现了一个有限的解决方法。 我用一个共享存储器块与同时从包ID衍生来存储上下文字符串的名称。 该块在正常关机清零。 然后我重写-crashReportDescription在我的昆西委托,以便它提供了共享内存的内容,如果有的话,作为描述。 只有非空,如果最后的应用程序关闭是一个崩溃。

明明有这种方法的缺陷。 如果,比方说,重启死机和下一个应用程序启动的设备,共享存储的信息丢失。

编辑:在设计的第一个版本,我用了一个私人的,名为UIPasteboard而不是共享内存。 这被证明是相当耗。 共享内存是快几个数量级。

EDIT2:但随后他们的iOS 7打破了共享内存,因此UIPasteboard又回来了。 游民。

EDIT3:发现了另一种方法,那么优雅,但它的iOS 7的作品我我的上下文字符串存储在一个普通的静态存储器块。 我把一个自定义的崩溃处理中PLCrashReporter与[[PLCrashReporter sharedReporter] setCrashCallbacks:] 。 在处理程序中,我写出来说上下文(如果有的话)的文件。 在应用程序启动时,我看书上说文件,并提供内容(如果有的话) -crashReportDescription 。 走开,UIPasteboard。



文章来源: QuincyKit/PLCrashReporter: provide description *before* the crash