設置debugger的佈局
可以通過Run > Debugger Display > Horizontal Layout設置成水平佈局,這是xcode的默認佈局,也可以通過Run > Debugger Display > Vertical Layout來設置成垂直佈局。區別在於,垂直時,位於原來中間的代碼區移到右邊。相對原來的,我更喜歡垂直佈局~
查看全局變量
Variable中現實了當前的變量的值,類型等等。其中有一個Global組顯示了當前的全局變量。默認爲空,我們可以通過Run > Show > Global Variables來選擇要顯示的全局變量。
設置斷點
斷點非常有用。按照作用範圍,xcode包括2類斷點。一種是Project Breakpoints,另一種是Global Breakpoints。如下圖:
兩者的區別在於,Project Breakpoints只作用在當前的project中。而Global則是作用在當前用戶的所有project中。
按照類型分,xcode包括4種類型的斷點:
- File Line :運行到文件的某一行觸發
- Symbolic:按照特定的條件觸發
- Objective-c exception: 拋出OBJC異常時觸發
- C++ exception:拋出C++異常時觸發
每一個斷點前的小三角可以打開一個設置關聯這個斷點行爲的窗口。比如說聲音,applescrpit等等
每個斷點前的圖標如果是個文件的話,表示這個斷點是File Line或者C++ exception,如果時藍盒子,則是Objective-c exception或者是Symbolic
最右面的方形選擇框有點特別,如果選擇了這個框,那麼xcode會停在斷點處,運行預先設置好的事件,然後自動繼續運行程序。如果沒有選,那麼xcode停在斷點處後,先運行設置好的事件,然後等待用戶決定是否繼續運行。
Condition處可以設置這個斷點的觸發條件。比如說 i==24表示當i等於24時這個斷點纔會被觸發。而Ignore Count處則是設置這個斷點處被忽略多少次。比如說這裏如果設置成5, 則表示第六次遇到這個斷點時才觸發。
如何設置斷點
設置一個File-Line斷點。
這個比較簡單,只需要在那一行前點一下,出現一個箭頭。 如:
設置Symbolic斷點:
有以下兩種方法:
- 選擇要設置的那一行,然後Run>Manage Breakpoints>Add Symbolic Breakpoint, 然後輸入方法或者函數名
- 打開斷點窗口,雙擊”Double-Click for Symbol”,然後輸入觸發時的函數路徑。
比如說我們可以設置爲 -[NSException raise], 這樣當調試時遇到NSException的異常時自動中斷。
給@Synthesize 設置斷點:
有時候可能需要知道什麼時候,什麼情況下讀取或者修改了某個成員變量的值。因此我們需要給這個成員變量設置一個斷點,當調試時,每次遇到讀取或者修改這個成員變量,就觸發這個斷點。
設置的方法非常簡單。只需要在那個變量的@synthesize那一行按照file-line的斷點設置一樣設置一個斷點,當運行調試時,會自動彈出一個窗口,詢問你要對setter還是getter還是這2者設置斷點。如下圖:
需要注意的是,如果修改了變量名,必須要重新設置一遍。
添加Objective-C Exception Breakpoints
這個功能相當有用。設置起來出奇的簡單。選中菜單Run>Activate/Deactivate下的Stop on Objective-C Exceptions. 如圖:
使用預定義的breakpoints.
XCode裏已經預定義了很多的breakpoint模版。在想要設定的代碼行前右鍵,Built-in Breakpoints,
預定義的breakpoint寫的很清楚明白。
- Log breakpoint and arguments and auto-continue: 打印當前的函數的參數並自動繼續執行。
- Log beakpoint and hit count and auto-continue: 打印出當前斷點已執行過的次數並繼續執行。
- Log stack trace and auto-continue: 打印當前的堆棧調用,並繼續執行。
- Sound out and auto-continue:響一聲並接着執行。
- Print self and auto-continue:打印當前函數所屬的類,並繼續執行。
- Speak breakpoint and hit count and auto-continue: 讀出斷點,次數並繼續執行。