我真的不知道爲什麼我有這個錯誤。EXC_BAD_INSTRUCTION(code = EXC_I386_INVOP,subcode = 0x0)
首先調試器停止在機器代碼
線程也說明不了什麼。在沒有代碼實際上
所以它是與_dispatch_worker_thread
那是什麼程序停止?
無論如何我可以調試呢?我應該回滾嗎?
我真的不知道爲什麼我有這個錯誤。EXC_BAD_INSTRUCTION(code = EXC_I386_INVOP,subcode = 0x0)
首先調試器停止在機器代碼
線程也說明不了什麼。在沒有代碼實際上
所以它是與_dispatch_worker_thread
那是什麼程序停止?
無論如何我可以調試呢?我應該回滾嗎?
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
中的一個錯誤嗎?
最終在原始問題的背景下,我懷疑失敗的圖書館功能已經發出了斷言。
當您運行CPU上不支持的(矢量)擴展時,會發生此類崩潰。
例如,在下面的Xcode 5「項目的設置/建造的設置/代碼生成,設置 ‘啓用其他矢量擴展’到‘AVX2’。建立你的可執行文件。
現在上運行:
在英特爾G620處理器上不會發生此故障 每次在英特爾酷睿i5上使用AVPlayer類時都會崩潰。 – rozochkin
在我的情況下,我添加了一個觀察者contentSize
到UITextView
在viewDidLoad中,並且從未刪除它。通過將其添加到viewDidAppear
,然後在viewWillDisappear
中刪除它來修復它。 它是如此惱人找出:(
要使用前viewDidAppear
[self.textViewMessage addObserver:self
forKeyPath:NSStringFromSelector(@selector(contentSize))
options:NSKeyValueObservingOptionNew
context:nil];
刪除觀察員加入觀察員viewWillDisappear
[self.textViewMessage removeObserver:self forKeyPath:NSStringFromSelector(@selector(contentSize))];
這通常發生在某個對象已被釋放[This blog](http://www.andrashatvani.com/2011/05/understanding-excbadaccess.html)可能會有所幫助,但請同時顯示一些代碼。 – Tikkes
你有沒有設置異常斷點?單擊斷點選項卡 - >點擊左下方的加號按鈕 - >單擊「添加異常斷點」 - >用默認設置完成點擊通常很好。然後再運行 –
我會試試。由於某種原因,它不會再發生。另外,因爲我正在使用ARC,我認爲應該注意發佈和內容。 –