用NSZombieEnabled解決惱人的EXC_BAD_ACCESS錯誤
轉自:http://www.cocoachina.com/iphonedev/sdk/2011/0626/2980.html
有時開發者會遇到這樣的問題:程式突然Crash,出現EXC_BAD_ACCESS錯誤。但是不是每次都Crash,Debug時最終基本停在objc-msgsend這裡,十分令人費解。
首先解釋下EXC_BAD_ACCESS,當你向已經釋放的物件傳送訊息時就會出現這種錯誤。
至於NSZombieEnabled,就是當設定NSZombieEnabled環境變數後,一個物件銷燬時會被轉化為_NSZombie,個人感 覺和執行緒的那幾個狀態有些相似,設定NSZombieEnabled後,當你向一個已經釋放的物件傳送訊息,這個物件就不會向之前那樣Crash或者產生 一個難以理解的行為,而是放出一個錯誤訊息,然後以一種可預測的可以產生debug斷點的方式消失(原文是die),因此我們就可以找到具體或者大概是哪 個物件被錯誤的釋放了。
設定NSZombieEnabled的方法如下
- 在XCode左邊那個Groups & Files欄中找到Executables,雙擊其中的一項,或者右鍵Get Info;
- 切換到Arguments
- 這裡一共有兩個框,在下面那個Variables to be set in the environment:點+號新增一項,Name裡填NSZombieEnabled,Value填Yes,要保證前面的鉤是選中的。
好了,趕緊去找哪裡出了問題吧,至於取消NSZombieEnabled,就是吧剛才提到的那個鉤取消即可。
最後總結一下感想,首先是我對EXC_BAD_ACCESS這個錯誤還沒有足夠的認識,其次是我沒有儘快的去搜尋一下解決方法,這兩點導致我浪費了大量時間做各種各樣奇怪的除錯。幸好現在解決了,可以繼續工作了。
相關文章
- Ocelot錯誤解決
- undefined reference to錯誤的解決方法Undefined
- Cocopods的升級錯誤解決
- ORA-12005 錯誤的解決
- SAXParseException的錯誤解決之二Exception
- 解決 Python UnicodeEncodeError 錯誤PythonUnicodeError
- 糖豆人epic賬戶錯誤14怎麼解決
- dbfread報錯ValueError錯誤解決方法Error
- 解決 ngrok 的 Domain 錯誤問題AI
- Qt報Multiple definition錯誤的解決QT
- 解決MySQL server has gone away錯誤的解決方案MySqlServerGo
- PbootCMS 404 錯誤解決方法boot
- Linux下錯誤解決方案Linux
- latex 錯誤以及解決方案
- HTTP 錯誤 500.19- Internal Server Error 錯誤解決方法HTTPServerError
- steam磁碟寫入錯誤怎麼解決 steam磁碟寫入錯誤解決方法大全
- 解決 eslint 的 Parsing error: Unexpected token 錯誤EsLintError
- Mac上搭建chromedriver的錯誤解決方法MacChrome
- standby新增檔案錯誤的解決方法
- nginx出現403錯誤的解決方法Nginx
- 一個 ExpressionChangedAfterItHasBeenCheckedError 錯誤的解決過程ExpressError
- MYSQL中 TYPE=MyISAM 錯誤的解決方法MySql
- 騷爆了... Go 錯誤處理中再套個娃,能解決煩惱不?Go
- ORA-28000錯誤解決方案
- dedecms提示500錯誤解決方法
- PHP curl error 60 錯誤解決PHPError
- linux解決“XXX is not in the sudoers file”錯誤Linux
- 解決java.lang.NoSuchMethodError錯誤JavaError
- HTTP代理錯誤怎麼解決?HTTP
- TCP網路除錯助手提示錯誤:“1035:未知錯誤” 解決方案TCP除錯
- 印表機提示列印錯誤怎麼解決 印表機狀態錯誤的方法
- win10硬體錯誤117怎麼解決?win10硬體錯誤117的解決辦法Win10
- photoshop匯出png發生未知錯誤的解決方案,ps匯出發生未知錯誤怎麼解決
- 解決Gitlab的The remote end hung up unexpectedly錯誤GitlabREM
- mysqldump error1066 錯誤的解決辦法MySqlError
- iOS路上遇到的錯誤及解決辦法iOS
- Linux yum提示Loaded plugins錯誤的解決方法LinuxPlugin
- SSL錯誤ssl connect error 35的解決方案Error
- Nginx報504 gateway timeout錯誤的解決方法NginxGateway