程序員平常開發中有大量時間都會花費在 debug 上,從事 iOS 開發不可避免地須要使用 Xcode。這篇博客就主要介紹了 Xcode 中幾種可以大幅提高代碼調試效率的方式。程序員
「If debugging is the process of removing bugs, then programming must be the process of putting them in.」
——Edsger W. Dijkstralua
添加條件spa
有時候咱們可能會在某個循環中建立斷點,但一次又一次地點擊 continue 直到咱們想要的條件出現,顯然是一種很是低效的方式。好在 Xcode 爲咱們提供了條件斷點。.net
首先在下列代碼中插入一個普通的斷點debug
右鍵點擊斷點,選擇 Edit Breakpoint,在 Condition 一欄輸入 i > 50調試
這樣一來,只有當程序運行知足條件以後纔會觸發斷點了。日誌
Symbolic Breakpointcode
Symbolic Breakpoint 是一種很是強大的斷點。在 Xcode 中找到 Breakpoint navigator(你能夠經過快捷鍵 command + 7),在最下方點擊加號,能夠看到它。開發
添加以後在 Symbol 一欄輸入 viewDidLoad。
這樣一來,在程序中全部的 viewDidLoad 方法被調用時都會觸發斷點。rem
固然,咱們也能夠僅僅爲特定的某個類的方法添加斷點。在 Symbol 一欄輸入 [ClassName viewDidLoad] (Objective-C) 或 ClassName.viewDidLoad (Swift) 便可。
監控斷點
咱們調試程序的大部分時候都是爲了監控某個變量的變化,在代碼中變量出現的地方添加斷點不只累並且還可能漏掉,過後還得一個一個刪掉,實在很累。
咱們能夠經過爲變量添加監控斷點來簡單地作到這一點。
找到變量第一次出現的地方,添加一個普通斷點,進入 debug 模式後在 Variables View 中右鍵變量,選擇 Watch 變量名。這樣,每一次該變量被改變都會觸發斷點告知咱們。
咱們能夠在 Console 中看到其變化。(注:在 Xcode 6.1.1 版本中,在監控 Swift 變量時彷佛還有一些問題,沒法正確地顯示變量的值)
日誌信息斷點
最多見的 Debug 方式應該就是 NSLog and println 了。一般咱們會經過這種方式來打印輸出各類實例信息以檢測程序運行狀態。
但這一調試方式也有很明顯缺陷:
沒法在運行時添加
添加數量過多以後干擾視線,又須要麻煩地刪除或註釋掉
會編譯進 App,在正式版本中須要關閉(固然,咱們能夠經過宏來判斷是否應該編譯,但這也須要額外的操做不是嗎)
所幸在 Xcode 中咱們還有另外一種選項。
在以下代碼中添加一個普通的斷點,選擇 Edit Breakpoint,而後點擊 Add Action,選擇 Log Message,在輸入框中輸入 The number is: @number @。
運行效果以下圖所示
這裏由於有日誌輸出,因此咱們能夠勾選上最下面的 Automatically continue after evaluating actions,這樣這個斷點就只會安安靜靜地爲咱們輸出日誌了。
發聲斷點
同日志信息斷點,編輯普通斷點,Action 選擇 Sound。當觸發斷點時會發出設置的聲音。此 Action 配合 Automatically continue after evaluating actions 選項,能夠作到酷炫的聽聲識 Bug。:)
總結
上述的日誌信息斷點及發生斷點都是能夠添加觸發條件的。經過這些斷點操做,天然是可以極大地提高平常開發中調試代碼的效率了。