1.開啟 Enable NSZombie Objects(開啟僵尸對象) 模式
Enable NSZombie Objects可能是整個Xcode開發環境中最有用的調試技巧。這個技巧非常非常容易追蹤到重復釋放內存 或者 使用已經釋放的內存地址 的問題。該技巧會以非常簡潔的方式打印指出重復釋放的類和該類的內存地址。
怎么開啟僵尸對象呢?首先打開“Edit Scheme”,然后選擇Diagnostics選項卡,勾選Enable NSZombie Objects選項。
現在我們可以關掉ARC來測試重復釋放的問題、異常和更容易產生的Crashs,但是即使開啟ARC,重復釋放和與內存相關的Crashs也經常發生。現在假設我們犯了一些錯誤導致了重復釋放的發生來觀察將要發生什么。
現在運行這段代碼
UIView* view = [[[UIView alloc] init] autorelease];// 釋放一次
// it?has?been?autoreleased.
[view?release];// 釋放一次
Enable NSZombie Objects會讓輸出這樣的崩潰信息
2.Condational Breakpoints(條件斷點)
這只是普通的斷點,當變量滿足一定條件時程序停止
這個調試技巧在當你想要捕獲一個循環中的變量的特定值或者一些不常發生的情況時是非常有用的,而不用你每次迭代都停止來查看。
鼠標點擊,添加一個普通的斷點,然后右鍵點擊斷點選擇“Edit Breakpoint”,這時就打開了一個斷點編輯器,你可以在這里設置斷點條件(以及一些其他的斷點設置),然后選擇“Done”,這個調試技巧非常簡單吧。
3.unrecognized selector send to instancd 快速定位
添加一個 add Symbolic Breakpoint
在Symbolic中填寫如下方法簽名
-[NSObject(NSObject)?doesNotRecognizeSelector:]
設置完成后再遇到類似的錯誤就會定位到具體的代碼。