exc bad access的定位方法

2022-03-27 15:34:30 字數 821 閱讀 4175

網上有一些關於這個問題的解決辦法,但是多數說得不清楚,我結合自己的實踐,描述一下具體的步驟。

1.在xcode的groups & files / executables資料夾中,雙擊,選擇arguments,選擇下面一欄,點「+」號,新增四個變數,名字分別為:nszombieenabled、mallocstacklogging、nsdebugenabled、mallocstackloggingnocompact,value都填yes。

2.執行程式如果出現exc_bad_access,控制台提示資訊會顯示類似如下的資訊:

2011-12-14 13:44:18.300 aproject[4009:207] *** -[cfstring class]: message sent to deallocated instance 0x5e463b0

這時,在控制台輸入shell 

malloc_history40090x5e463b0。這裡的4009就是上面的提示資訊裡的4009,表示程序號,0x5e463b0就是上面的0x5e463b0,表示出錯的變數位址。

按回車,控制台會輸出一些資訊,有些是以 alloc或free開頭的,這些是記憶體請求或釋放的記錄,包含傳送給這些物件的訊息。出錯一般在最後乙個這樣的資訊,以alloc或malloc開頭,找到最後乙個屬於自己寫的訊息,問題就是這個訊息了。這樣就可以定位到哪一行**出錯了。

主要參考文章:

by zqzhuang

exc bad access的定位方法

網上有一些關於這個問題的解決辦法,但是多數說得不清楚,我結合自己的實踐,描述一下具體的步驟。1.在xcode的groups files executables資料夾中,雙擊,選擇arguments,選擇下面一欄,點 號,新增四個變數,名字分別為 nszombieenabled mallocstack...

exc bad access檢視bug的方法

有時程式崩潰根本不知錯誤發生在什麼地方。比如程式出現exec bad access的時候,雖然大部分情況使用設定 nszombieenabled環境變數可以幫助你找到問題的所在,但少數情況下,即使設定了nszombieenabled環境變數,還是不知道程式崩 潰在什麼地方。那麼就需要使用下列 進行幫...

除錯EXC BAD ACCESS 物件釋放

當你對已釋放的物件傳送訊息 90 的可能是對引用計數為0的物件再release 或release那些autorelease物件時,就會出現報exc bad access這樣的錯誤。預設設定下 xcode不會給你定位具體是哪一行 不該去使用已釋放的物件,或者release用錯了。product edi...