Xcode除錯總結

2021-07-24 08:39:40 字數 1827 閱讀 2919

1.nslog

效率低下,只適合log error

2.lldb常用命令(lldb命令大全)

po:列印物件資料。 如:po [[self view] recursivedescription]列印self.view包涵的子檢視

p:列印一些基礎資料型別資料

call:執行一段**(面對又返回的呼叫,也可以使用po或者p命令)  如call [self.view setbackgroundcolor:[uicolor redcolor]],繼續執行程式,會看到背景色變化

expr:動態執行指定表示式,常用於在除錯過程中修改執行中變數的值。

bt:列印當前執行緒堆疊資訊,如果要列印所以執行緒堆疊資訊,使用:bt all即可。

image:命令可用於定址,有多個組合命令。比較實用的用法是用於尋找棧位址對應的**位置:image lookup --address 0x0000000104c25550 ,找到崩潰位址 0x0000000104c25550對應在**中的位置

3.breakpoint

1)、異常斷點 

異常斷點可以快速定位不滿足特定條件的異常,比如常見的陣列越界,這時候很難通過異常資訊定位到錯誤所在位置。

2)、符號斷點

符號斷點的建立方式和異常斷點一樣一樣的,在符號斷點中可以指定要中斷執行的方法。

3)、條件斷點

打上斷點之後,對斷點進行編輯,設定相應過濾條件,使用斷點的action可以log message

4、開啟殭屍物件

開啟zombie模式之後會導致記憶體上公升,因為所以已經被釋放(引用計數為0)的物件被殭屍物件取代,並未真的釋放掉。這個時候再給殭屍物件傳送訊息,就會丟擲異常,並列印出異常資訊,你可以輕鬆的找到錯誤**位置,結束zombies時會釋放。它的主要功能是檢測野指標呼叫。

5、address sanitizer(位址消毒劑)

在xcode7之後新增了addresssanitizer工具,為我們除錯exc_bad_access錯誤提供了便利。當程式建立變數分配一段記憶體時,將此記憶體後面的一段記憶體也凍結住,標識為中毒記憶體。程式訪問到中毒記憶體時(訪問越界),立即中斷程式,丟擲異常並列印異常資訊。你可以根據中斷位置及輸出的log資訊來解決錯誤。當然,如果變數已經釋放了,它所占用的記憶體也會被標識為中毒記憶體,這個時候訪問這片記憶體空間同樣會丟擲異常。

6、介面除錯

1)、show view frames

除錯中,可以清楚的看到介面上元素的frame,主要用於除錯介面位置布局除錯

2)、capture view hierarchy

通過capture view hierarchy可以在xcode中清清楚楚的看到當前除錯的頁面的view層次,作為檢視層次布局除錯很好的工具

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...