XCODE調試技巧集錦

來源:互聯網
上載者:User
前記:編寫代碼過程中,出現錯誤、異常是不可避免的,這個時候,就體現了調試的重要性,下面就總結一下,平常我自己使用的一些調試技巧,以及匯總網路上其他網友使用的技巧。(ps以後有新的調試技巧,我也會一併更新)
1、使用殭屍變數(NSZombieEnabled)
具體使用及設定,可參考我的另一篇博文:http://blog.csdn.net/yhawaii/article/details/77895942、重寫object的respondsToSelector方法

在iphone開發的時候EXC_BAD_ACCESS這個bug時不容易找到原因的。

首先說一下EXC_BAD_ACCESS 這個錯誤,可以這麼說,90%的錯誤來源在於對一個已經釋放的對象進行release操作,或者操作一個在迴圈代碼中被修改的序列中的對象。雖然使用NSZombieEnabled變數可以協助你找到問題所在,但有的時候,即使通過設定NSZombieEnabled變數,還是不能定位到問題所在,這個時候,你可以試試重寫object的respondsToSelector方法,顯示出現EXEC_BAD_ACCESS前訪問的最後一個object,下面是具體的步驟:

a、在每個類並且在 other c flags中加入-D _FOR_DEBUG_(記住請只在Debug Configuration下加入此標記)。這樣當你程式崩潰時,Xcode的console上就會準確地記錄了最後啟動並執行object的方法。的實現檔案(.m,.mm)檔案中,添加如下代碼:

    -(BOOL) respondsToSelector : (SEL)aSelector {        printf("SELECTOR: %s\n", [NSStringFromSelector(aSelector) UTF8String]);        return [super respondsToSelector:aSelector];    }


b、並且在 other c flags中加入-D _FOR_DEBUG_(記住請只在Debug Configuration下加入此標記)。這樣當你程式崩潰時,Xcode的console上就會準確地記錄了最後啟動並執行object的方法。

3、讓XCode反饋足夠多的資訊

在Edit–>Scheme裡面 找到Arguments ,在Environment Variables這裡添加
把下面2個值設定成YES
NSAutoreleaseFreedObjectCheckEnabled
NSDebugEnabled
這種方法非常好用,建議在建立一個工程的時候,加入此設定

4、設定全域異常斷點

在程式拋出異常時候,往往需要定位到異常

鍵入快速鍵 cmd + 6 進入斷點視窗,點擊左下角的"+"按鈕,選擇彈出框的“Add Exception BreakPoint”項,如所示:

然後使用預設設定,點擊"done"按鈕,設定全域異常斷點就完成了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.