查詢 EXC BAD ACCESS 問題根源的方法

2022-04-28 20:45:15 字數 1016 閱讀 8177

1: 為工程執行時加入 nszombieenabled 環境變數,並設為啟用,則在 exc_bad_access 發生時,xcode 的 console 會列印出問題描述。

首先雙擊 xcode 工程中,executables 下的 可執行模組,

在彈出視窗中,variables to be set in the environment,新增 nszombieenabled,並設定為 yes,點選選中核取方塊啟用此變數。

這樣,執行上述 objective-c 時會看到控制台輸出:untitled[3646:a0f] *** -[cfstring release]: message sent to deallocated instance 0x10010d340

這條訊息對於定位問題有很好的提示作用。但是很多時候,只有這條提示是不夠的,我們需要更多的提示來幫助定位問題,這時候再加入 mallocstacklogging來啟用malloc記錄。

當錯誤發生後,在終端執行:

則會獲得相應的 malloc 歷史記錄,比如對於上乙個控制台輸出

untitled[3646:a0f] *** -[cfstring release]: message sent to deallocated instance 0x10010d340

則我們可以在終端執行,結果如下:

這樣就可以很快的定位出問題的**片段了,注意輸出的最後一行,,,這行雖然不是問題的最終原因,但是離問題點已經很近了,隨著它找下去,八成就會找到問題。

除錯EXC BAD ACCESS 物件釋放

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

exc bad access的定位方法

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

exc bad access的定位方法

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