程序員日常開(kāi)發(fā)中有大量時(shí)間都會(huì)花費(fèi)在 debug 上,從事 iOS 開(kāi)發(fā)不可避免地需要使用 Xcode。這篇博客就主要介紹了 Xcode 中幾種能夠大幅提升代碼調(diào)試效率的方式。

“If debugging is the process of removing bugs, then programming must be the process of putting them in.”
——Edsger W. Dijkstra
添加條件
有時(shí)候我們可能會(huì)在某個(gè)循環(huán)中創(chuàng)建斷點(diǎn),但一次又一次地點(diǎn)擊 continue 直到我們想要的條件出現(xiàn),顯然是一種非常低效的方式。好在 Xcode 為我們提供了條件斷點(diǎn)。
首先在下列代碼中插入一個(gè)普通的斷點(diǎn)

右鍵點(diǎn)擊斷點(diǎn),選擇 Edit Breakpoint,在 Condition 一欄輸入 i > 50

這樣一來(lái),只有當(dāng)程序運(yùn)行滿足條件之后才會(huì)觸發(fā)斷點(diǎn)了。
Symbolic Breakpoint
Symbolic Breakpoint 是一種非常強(qiáng)大的斷點(diǎn)。在 Xcode 中找到 Breakpoint navigator(你可以通過(guò)快捷鍵 command + 7),在最下方點(diǎn)擊加號(hào),可以看到它。

添加之后在 Symbol 一欄輸入 viewDidLoad。
這樣一來(lái),在程序中所有的 viewDidLoad 方法被調(diào)用時(shí)都會(huì)觸發(fā)斷點(diǎn)。

當(dāng)然,我們也可以僅僅為特定的某個(gè)類的方法添加斷點(diǎn)。在 Symbol 一欄輸入 [ClassName viewDidLoad] (Objective-C) 或 ClassName.viewDidLoad (Swift) 即可。
監(jiān)控?cái)帱c(diǎn)
我們調(diào)試程序的大部分時(shí)候都是為了監(jiān)控某個(gè)變量的變化,在代碼中變量出現(xiàn)的地方添加斷點(diǎn)不僅累而且還可能漏掉,事后還得一個(gè)一個(gè)刪掉,實(shí)在很累。
我們可以通過(guò)為變量添加監(jiān)控?cái)帱c(diǎn)來(lái)簡(jiǎn)單地做到這一點(diǎn)。
找到變量第一次出現(xiàn)的地方,添加一個(gè)普通斷點(diǎn),進(jìn)入 debug 模式后在 Variables View 中右鍵變量,選擇 Watch 變量名。這樣,每一次該變量被改變都會(huì)觸發(fā)斷點(diǎn)告知我們。

我們可以在 Console 中看到其變化。(注:在 Xcode 6.1.1 版本中,在監(jiān)控 Swift 變量時(shí)似乎還有一些問(wèn)題,無(wú)法正確地顯示變量的值)

日志信息斷點(diǎn)
最常見(jiàn)的 Debug 方式應(yīng)該就是 NSLog and println 了。通常我們會(huì)通過(guò)這種方式來(lái)打印輸出各種實(shí)例信息以檢測(cè)程序運(yùn)行狀態(tài)。
但這一調(diào)試方式也有很明顯缺陷:
無(wú)法在運(yùn)行時(shí)添加
添加數(shù)量過(guò)多之后干擾視線,又需要麻煩地刪除或注釋掉
會(huì)編譯進(jìn) App,在正式版本中需要關(guān)閉(當(dāng)然,我們可以通過(guò)宏來(lái)判斷是否應(yīng)該編譯,但這也需要額外的操作不是嗎)
所幸在 Xcode 中我們還有另一種選項(xiàng)。
在如下代碼中添加一個(gè)普通的斷點(diǎn),選擇 Edit Breakpoint,然后點(diǎn)擊 Add Action,選擇 Log Message,在輸入框中輸入 The number is: @number@。

運(yùn)行效果如下圖所示

這里因?yàn)橛腥罩据敵觯晕覀兛梢怨催x上最下面的 Automatically continue after evaluating actions,這樣這個(gè)斷點(diǎn)就只會(huì)安安靜靜地為我們輸出日志了。
發(fā)聲斷點(diǎn)
同日志信息斷點(diǎn),編輯普通斷點(diǎn),Action 選擇 Sound。當(dāng)觸發(fā)斷點(diǎn)時(shí)會(huì)發(fā)出設(shè)置的聲音。此 Action 配合 Automatically continue after evaluating actions 選項(xiàng),可以做到酷炫的聽(tīng)聲識(shí) Bug。:)
總結(jié)
上述的日志信息斷點(diǎn)及發(fā)生斷點(diǎn)都是可以添加觸發(fā)條件的。通過(guò)這些斷點(diǎn)操作,自然是能夠極大地提升日常開(kāi)發(fā)中調(diào)試代碼的效率了。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前名稱:Xcode的正確打開(kāi)方式——Debugging-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:http://www.chinadenli.net/article8/degoip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、做網(wǎng)站、網(wǎng)站排名、面包屑導(dǎo)航、全網(wǎng)營(yíng)銷推廣、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容