我真的无法弄清楚为什么我有这个错误。
首先,调试器停在机器代码
线程也没有显示任何内容。该程序实际上没有代码停止
所以它与_dispatch_worker_thread
有关 那是什么?我怎么能调试这个?我应该回滚吗?
答案 0 :(得分:8)
当您运行CPU不支持的(向量)扩展时,会发生这种崩溃。
例如,在“project-settings / build-settings / Code Generation”下的xcode 5中,设置 “启用其他矢量扩展”到“AVX2”。构建可执行文件。
现在在:
上运行它答案 1 :(得分:6)
EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP)
是__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上,我们将其编译为trap
并在XCode中产生trace
个断点。这是clang
中的错误吗?
最终在原始问题的上下文中,我怀疑失败的库函数已经触及了一个断言。
答案 2 :(得分:0)
在我的情况下,我在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))];