使用XCode調試

設置debugger的佈局

可以通過Run > Debugger Display > Horizontal Layout設置成水平佈局,這是xcode的默認佈局,也可以通過Run > Debugger Display > Vertical Layout來設置成垂直佈局。區別在於,垂直時,位於原來中間的代碼區移到右邊。相對原來的,我更喜歡垂直佈局~

查看全局變量

Variable中現實了當前的變量的值,類型等等。其中有一個Global組顯示了當前的全局變量。默認爲空,我們可以通過Run > Show > Global Variables來選擇要顯示的全局變量。

設置斷點

斷點非常有用。按照作用範圍,xcode包括2類斷點。一種是Project Breakpoints,另一種是Global Breakpoints。如下圖:

 

屏幕快照 2011-01-28 下午08.47.39.png

兩者的區別在於,Project Breakpoints只作用在當前的project中。而Global則是作用在當前用戶的所有project中。

按照類型分,xcode包括4種類型的斷點:

  • File Line :運行到文件的某一行觸發
  • Symbolic:按照特定的條件觸發
  • Objective-c exception: 拋出OBJC異常時觸發
  • C++ exception:拋出C++異常時觸發

每一個斷點前的小三角可以打開一個設置關聯這個斷點行爲的窗口。比如說聲音,applescrpit等等

屏幕快照 2011-01-28 下午08.51.17.png

每個斷點前的圖標如果是個文件屏幕快照 2011-01-28 下午09.08.11.png的話,表示這個斷點是File Line或者C++ exception,如果時藍盒子屏幕快照 2011-01-28 下午09.09.09.png,則是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者設置斷點。如下圖:

@synthesize Breakpoint

需要注意的是,如果修改了變量名,必須要重新設置一遍。

添加Objective-C Exception Breakpoints

這個功能相當有用。設置起來出奇的簡單。選中菜單Run>Activate/Deactivate下的Stop on Objective-C Exceptions. 如圖:

Stop on ObjC Exceptions.png

使用預定義的breakpoints.

XCode裏已經預定義了很多的breakpoint模版。在想要設定的代碼行前右鍵,Built-in Breakpoints,

屏幕快照 2011 01 31 下午10 13 48

預定義的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: 讀出斷點,次數並繼續執行。



發佈了19 篇原創文章 · 獲贊 15 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章