NSKeyedArchiver调用encodeObject

时间:2019-06-08 13:19:31

标签: ios multithreading dictionary exc-bad-access

可以正常运行且没有问题的单元测试,现在由于错误EXC_BAD_ACCESS(代码= EXC_I386_GPFLT)而崩溃。这是相关的堆栈跟踪:
enter image description here 显然,数组的元素无法编码,可能是因为使用其哈希值访问字典失败了。由于这是在SQLQueue线程中发生的,因此我怀疑另一个线程在编码过程中确实修改了字典。
问题是如何解决这样的问题?

编辑:由于我有一个Watch Extension,因此无法在该方案中启用Thread Sanitizer,这会阻止它。

1 个答案:

答案 0 :(得分:0)

您的问题是如何赶上坠机事故吗? 如果是,

对于Objective-C,NSSetUncaughtExceptionHandler

对于Swift

signal(SIGABRT, handler)
signal(SIGILL, handler)
signal(SIGSEGV, handler)
signal(SIGFPE, handler)
signal(SIGBUS, handler)
signal(SIGPIPE, handler)

更新: 我刚刚搜索过,似乎其他人在讨论它

How to catch a Swift crash and do some logging