一. 斷點
Xcode支持很多種不同類型的斷點,包括普通斷點、符號斷點、異常斷點、watch斷點、OpenGL ES Error 斷點和Test Failure 斷點。(后兩者不常用)
1. 普通斷點:
下普通斷點很簡單,找到你要下斷點的代碼行,點擊編輯區左邊的行數處即可;或者使用快捷鍵直接command + \

特點: 當程序運行到此處的時候將會暫停
2. 符號斷點:
符號斷點其實就是對一個特定的函數/方法名下斷點,在導航區選擇斷點tab頁 -> 點擊最下面的加號 -> Add Symbolic Breakpoint
設置符號斷點可以輸入類名+方法名,也可輸入方法名,Xcode會自動匹配在不同類中同名的方法進行斷點。
特點: 一旦所填寫的方法被調用,就會暫停。
3.異常斷點:
異常斷點在調試時如果程序拋出異常,導致程序退出,就會暫停。導航區 -> 斷點tab –> 左下角加號 -> Add Exception Breakpoint
特點: 一旦程序異常就暫停,能立馬定位問題,為比較常用的一種斷點。
4. watch斷點
watch斷點就是當某個變量發生改變的時候觸發的斷點。在Xcode的watch窗口-> 右鍵需要watch的變量 -> watch “XXX”
當所watch的值發生變化時調試器會自動暫停。并打印信息
**特點: 當要觀察某個值是否發生變化,可使用watch斷點 **
5. 其他斷點(不常用)
OpenGL ES Error Breakpoint 以及 Test Failure Breakpoint
OpenGL ES Error Breakpoint :主要是OpenGL ES的斷點調試
Test Failure Breakpoint :這個類型的斷點會在test assertion 失敗的時候暫停程序的執行。
6. 編輯斷點:
右鍵普通斷點 -> Edit Breakpoint 添加條件
斷點的屬性以及說明
屬性 | 說明 |
---|---|
Condition | 輸入條件表達式,滿足條件的時候斷點就會生效。 |
Ignore | 在這里可以設置忽略斷點次數。 |
Action | 一些斷點觸發時的操作。 |
Options | 勾選Automatically continue after evaluating actions之后程序會在斷點產生后繼續運行。 |
7. 斷點后的action:
斷點后的action,其實就是當斷點被觸發可以執行一些操作。右鍵斷點 -> Edit breakpoint -> Add action
Action的類型很多,有Debugger Command、Log Message、Apple Script、Shell Command等,常用的有Debugger Command和Log Message
Action對于調試是非常有用的,比如你需要在斷點的地方頻繁打印某一對象時,你不用新加log,然后重新編譯,直接加一條Debugger Command就可以,下圖為打印self.string信息
7.1 用于action的Debugger Command常用命令
1.po命令 : 打印對象信息
2.expr命令:可以在調試時動態的執行表達式,同時打印出結果。常用來動態修改變量的值。
3.call命令 :動態調用函數,可以在不增加代碼,不重新編譯的情況下動態調用一個方法。
二. UI調試
1.控件信息
可以使用上述的po命令以及expr命令來查看、修改控件屬性。
2.快速預覽
Xcode5之后支持在調試時對變量進行快速預覽,調試時將鼠標放在變量上,然后點擊快速預覽按鈕即可看到控件的顯示。
3. 查看整體UI層級結構
點擊在Xcode的watch窗口上方的debug view hierarchy 按鈕
之后便可以觀察當前應用窗口的層級結構
注意:在面板底部左側有兩個按鈕。如下圖所示,取消對這兩個按鈕的選定,否則會隱藏一些視圖。
3.1 探索視圖層次
對于如何查看某個視圖,可以選定查看的視圖,然后觀察跳轉欄(Jump Bar)比如當選定最底部的視圖,則Jump Bar顯示
當各個視圖之間間距太小,可以使用左下方的slider來控制視圖間的間距.
同時若滾動右下方的滑塊,則可以隱藏不同層次的視圖
3.2 查看視圖
按下cmd + 6 調出導航欄的Debug navigator,選定要查看的視圖。或者直接在編輯區選定。
接著使用cmd + option + 4打開工具區的Size Inspector,便可查看該視圖的邊界、位置、錨點以及Auto Layout約束列表。
也可以通過cmd + option + 3切換至Object inspector。你會看到一個選定對象的各項信息,比如背景顏色,tag等等。