5個Xcode開發除錯技巧

2022-08-29 07:24:10 字數 2573 閱讀 5046

**joywii的部落格,原文:four tips for debugging in xcode like a bro

1.enable nszombie objects(開啟殭屍物件)

enable nszombie objects可能是整個xcode開發環境中最有用的除錯技巧。這個技巧非常非常容易追蹤到重複釋放的問題。該技巧會以非常簡潔的方式列印指出重複釋放的類和該類的記憶體位址。

怎麼開啟殭屍物件呢?首先開啟 edit scheme (或者通過熱鍵?

現在我們可以關掉arc來測試重複釋放的問題、異常和更容易產生的crashs,但是即使開啟arc,重複釋放和與記憶體相關的crashs也經常發生。現在假設我們犯了一些錯誤導致了重複釋放的發生來觀察將要發生什麼。

uiview* view = [[[uiview alloc] init] autorelease];

//do something with view...clearly forgetting that it has been autoreleased.

[view release];

現在執行這段**會發生重複釋放的問題,程式將崩潰在主函式,會像下面這樣:

enable nszombie objects會讓偵錯程式看起來像這樣:

這個例子看起來作用非常小,但是對於乙個大工程通過enable nszombie objects列印的資訊是非常有用的。

2.對於所有異常新增global breakpoint(全域性斷點)

怎樣開啟異常斷點呢?工程切換到異常瀏覽視窗,點選下方左側的 add breakpoint 按鈕,然後選擇 add exception breakpoint 確保可以捕獲所有異常。

現在異常發生時偵錯程式不會直接跳轉到主函式了,而是停留在了異常發生的地方。

這個斷點給了我們乙個除錯異常非常好的開始的點,不用我們再去遍歷代買去找異常發生的地方了。

3.static analyzer(靜態分析)

static analyzer是乙個非常好的工具去發現編譯器警告不會提示的問題和一些個人的內錯洩露和死儲存(不會用到的賦了值的變數)錯誤。這個方法可能大大的提高記憶體使用和效能,以及提公升應用的整體穩定性和**質量。

怎麼開啟static analyzer?開啟xcide的 product 選單,選擇analyzer選項(或者使用熱鍵? shift b)。正像你看到的下面的截圖,static analyzer會捕獲任何應用內的可能的問題然後以藍色的警告展示出來。

我們也可以設定我們的應用在我們編譯應用的時候自動開啟static analyzer,開啟專案project檔案,設定 run static analyzer 為yes,如下圖:

4.condational breakpoints(條件斷點)

最後乙個除錯技巧條件斷點,這只是普通的斷點,當變數滿足一定條件時程式停止。這個除錯技巧在當你想要捕獲乙個迴圈中的變數的特定值或者一些不常發生的情況時是非常有用的,而不用你每次迭代都停止來檢視。

怎樣開啟條件變數?只不過是新增乙個普通斷點,然後右鍵點選斷點選擇 edit breakpoint ,這時就開啟了乙個斷點編輯器,你可以在這裡設定斷點條件(以及一些其他的斷點設定),然後選擇 done ,這個除錯技巧非常簡單吧。

5.unrecognized selector send to instancd 快速定位

在debug選單中breakpoints->create symbolic breakpoint

在symbolic中填寫如下方法簽名

-[nsobject(nsobject) doesnotrecognizeselector:]

0設定完成後再遇到類似的錯誤就會定位到具體的**。

xcode除錯技巧

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

Xcode除錯技巧

xcode從預設使用lldb後,有很多實用的除錯技巧,這裡簡單介紹一下。log the called method func 1 nslog s pretty function set breakpoint 1 lldb breakpoint set n uiview setframe 新增斷點,設...

Xcode除錯技巧

xcode從預設使用lldb後,有很多實用的除錯技巧,這裡簡單介紹一下。1nslog s pretty function 1 lldb breakpoint set n uiview setframe 新增斷點,設定action為sound,然後勾選automatically continue af...