iOS 經常使用調試方法:斷點

級別: ★☆☆☆☆
標籤:「Xcode斷點調試」「iOS breakpoint」「iOS全局斷點」
做者: Xs·H
審校: QiShare團隊php


在iOS項目開發過程當中,經常使用到靜態分析(Analyze)、斷點(Breakpoint)和控制檯(Console)進行代碼調試。本篇文章介紹Xcode經常使用調試方法之「斷點調試」。git

1、簡介

Xcode的斷點功能是iOS開發者的經常使用功能。在代碼編輯區內的左邊欄上點擊一下便可建立一個斷點,當程序每次運行到斷點,就會暫停下來,方便開發者調試。以下圖:github

同時,開發者可使用上圖中用數字標記的工具輔助斷點調試。各工具的做用以下:數組

  1. 啓用/禁用斷點(點擊後變灰色,全部斷點失效;再點擊變藍色,全部斷點生效)
  2. 繼續執行程序(點擊後跳過本次斷點,繼續執行程序)
  3. 執行下一步(點擊後執行第37行代碼)
  4. 進入方法(點擊後進入-afunction方法)
  5. 跳出方法(在-afunction方法內部點擊後回到第36行代碼)

除了斷點的基礎用法,開發者還可使用斷點的進階功能:編輯斷點異常斷點和**符號斷點。微信

2、編輯斷點

雙擊斷點或者右鍵點擊斷點,選擇Edit Breakpoint便可打開斷點編輯頁面。頁面中包含Condition、Ignore、Action和Options四個部分,接下來逐一介紹。函數

1. Condition

Condition爲條件。開發者能夠在Condition輸入框中設置觸發斷點的條件。好比,在一個for循環中,能夠設置在知足i==5時才觸發斷點。以下圖。工具

2. Ignore

Ignore爲忽略次數。開發者能夠在Igore輸入框中設置忽略此斷點的次數。好比,設置Ignore爲5,則在第6次執行到斷點行時纔會觸發斷點。3d

3. Action

Action爲觸發動做。Action能夠添加多條,在觸發斷點後,會緊接着執行設定的Actions。Action有6種執行類型,其中較經常使用的有Debugger CommandLog message,以下圖。調試

1) Debugger Command

Debugger Command容許開發者設定一些LLDB命令,從而實現打印對象、修改變量等功能。以下圖。code

2) Log Message

Log Message爲提供了標準的文本輸出格式。開發者能夠按照格式設定在觸發斷點後輸出的內容。其中,@exp@表示輸出exp的內容,%B表示輸出斷點的名稱,%H表示輸出斷點執行的次數。以下圖。

4. Options

Options控制在執行斷點對應的Actions後是否自動繼續執行程序。勾選後Options後,斷點被觸發後不進入Debug界面。

3、異常斷點(全局斷點)

開發者能夠在Xcode中很方便地建立一個異常斷點。以下圖:

當建立異常斷點後,會顯示一個名爲All Exceptions的斷點,因此也常稱做全局斷點。當程序拋出異常時會觸發異常斷點,而且大部分常見錯誤會被斷點定位到對應的代碼行,很方便調試。好比:設置全局斷點後,咱們寫一段數組越界的代碼,當運行到此代碼時,就會斷點到越界的那一行。以下圖:

而當去掉全局斷點後再次運行程序觸發越界代碼後會崩潰斷點到main.m中,而不會定位到越界那一行。以下圖:

4、符號斷點

符號斷點(Symbolic Breakpoint)是全局斷點,能夠針對某一個方法(函數)設置斷點。開發者能夠很方便地建立一個符號斷點,以下圖:

與普通斷點相比,符號斷點的編輯界面多出來SymbolModule兩個輸入框。

1. Symbol

開發者能夠在Symbol輸入框中設置斷點出發方法/函數。以下圖,在Symbol中設置一個方法/函數後,運行程序並執行到此方法時會觸發斷點。

這裏要注意Symbol中方法/函數的寫法: 方法(OC方法):用+指明是類方法,用-指明是實例方法,參數聲明不可省略,:後不能有空格; 函數:(C函數):直接寫函數名便可。

2. Module

開發者能夠在Module輸入框中設置Symbol中的函數所在的庫,以免不一樣庫中存在名字相同的方法/函數,默認不用填寫。

3. Condition等功能

符號斷點編輯頁面除SymbolModule外的Condition等功能用法與普通斷點一致。好比,在Condition輸入框中設置$arg3==nil && $arg4==nil,就會限制斷點在知足第一個參數和第二個參數都爲nil時纔會被觸發。以下圖:

總結

Xcode的斷點調試功能很是強大,開發者充分利用斷點調試,再結合上豐富的LLDB調試命令,會在不少程度上提升開發效率。


小編微信:可加並拉入《QiShare技術交流羣》。

關注咱們的途徑有:
QiShare(簡書)
QiShare(掘金)
QiShare(知乎)
QiShare(GitHub)
QiShare(CocoaChina)
QiShare(StackOverflow)
QiShare(微信公衆號)

推薦文章:
iOS消息轉發
iOS 自定義拖拽式控件:QiDragView
iOS 自定義卡片式控件:QiCardView
iOS Wireshark抓包
iOS Charles抓包
奇舞週刊

相關文章
相關標籤/搜索