我真的不知道为什么我有这个错误。
首先调试器停在机器码
该线程也没有显示任何内容。程序实际上没有代码停止
所以它与_dispatch_worker_thread有关
那是什么?
有什么办法可以调试这个?我应该回滚吗?
我真的不知道为什么我有这个错误。
首先调试器停在机器码
该线程也没有显示任何内容。程序实际上没有代码停止
所以它与_dispatch_worker_thread有关
那是什么?
有什么办法可以调试这个?我应该回滚吗?
当您运行 CPU 不支持的(矢量)扩展时,会发生这种崩溃。
例如,在“project-settings / build-settings / Code Generation”下的 xcode 5 中,将“Enable Additional Vector extensions”设置为“AVX2”。构建您的可执行文件。
现在运行它:
EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP)
是 a - 的副产品,__builtin_trap()
它是一个 GCC 和 clang 内在函数。在 x86 上,我们得到
0x4dfa2: movl %esi, (%esp)
0x4dfa5: movl %edx, 4(%esp)
0x4dfa9: movl %eax, 8(%esp)
0x4dfad: calll 0x110ffa ; symbol stub for: objc_msgSend
0x4dfb2: cmpb $0, %al
0x4dfb4: je 38
-> 0x4dfba: ud2
0x4dfbc: movl -32(%ebp), %eax
指令ud2
是这里的罪魁祸首,Xcode 没有专门处理。
在 ARM 上,我们将其编译为XCodetrap
并导致trace
断点。这是clang
我们这里的一个错误吗?
最终,在原始问题的上下文中,我怀疑失败的库函数已经达到了断言。
在我的情况下,我在 viewDidLoad 中添加了一个观察者,contentSize
并且UITextView
从未删除它。viewDidAppear
通过添加它然后将其删除来修复它viewWillDisappear
。发现太烦人了:(
添加观察者viewDidAppear
[self.textViewMessage addObserver:self
forKeyPath:NSStringFromSelector(@selector(contentSize))
options:NSKeyValueObservingOptionNew
context:nil];
删除观察者viewWillDisappear
[self.textViewMessage removeObserver:self forKeyPath:NSStringFromSelector(@selector(contentSize))];