溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Xcode 的正確打開方式——Debugging

發(fā)布時間:2020-07-27 14:31:00 來源:網(wǎng)絡(luò) 閱讀:237 作者:卓行天下 欄目:開發(fā)技術(shù)

程序員日常開發(fā)中有大量時間都會花費在 debug 上,從事 iOS 開發(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

添加條件

有時候我們可能會在某個循環(huán)中創(chuàng)建斷點,但一次又一次地點擊 continue 直到我們想要的條件出現(xiàn),顯然是一種非常低效的方式。好在 Xcode 為我們提供了條件斷點。

首先在下列代碼中插入一個普通的斷點

Xcode 的正確打開方式——Debugging

右鍵點擊斷點,選擇 Edit Breakpoint,在 Condition 一欄輸入 i > 50

Xcode 的正確打開方式——Debugging

這樣一來,只有當(dāng)程序運行滿足條件之后才會觸發(fā)斷點了。

Symbolic Breakpoint

Symbolic Breakpoint 是一種非常強(qiáng)大的斷點。在 Xcode 中找到 Breakpoint navigator(你可以通過快捷鍵 command + 7),在最下方點擊加號,可以看到它。

Xcode 的正確打開方式——Debugging

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

Xcode 的正確打開方式——Debugging

當(dāng)然,我們也可以僅僅為特定的某個類的方法添加斷點。在 Symbol 一欄輸入 [ClassName viewDidLoad] (Objective-C) 或 ClassName.viewDidLoad (Swift) 即可。

監(jiān)控斷點

我們調(diào)試程序的大部分時候都是為了監(jiān)控某個變量的變化,在代碼中變量出現(xiàn)的地方添加斷點不僅累而且還可能漏掉,事后還得一個一個刪掉,實在很累。

我們可以通過為變量添加監(jiān)控斷點來簡單地做到這一點。

找到變量第一次出現(xiàn)的地方,添加一個普通斷點,進(jìn)入 debug 模式后在 Variables View 中右鍵變量,選擇 Watch 變量名。這樣,每一次該變量被改變都會觸發(fā)斷點告知我們。

Xcode 的正確打開方式——Debugging

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

Xcode 的正確打開方式——Debugging

日志信息斷點

最常見的 Debug 方式應(yīng)該就是 NSLog and println 了。通常我們會通過這種方式來打印輸出各種實例信息以檢測程序運行狀態(tài)。

但這一調(diào)試方式也有很明顯缺陷:

  1. 無法在運行時添加

  2. 添加數(shù)量過多之后干擾視線,又需要麻煩地刪除或注釋掉

  3. 會編譯進(jìn) App,在正式版本中需要關(guān)閉(當(dāng)然,我們可以通過宏來判斷是否應(yīng)該編譯,但這也需要額外的操作不是嗎)

所幸在 Xcode 中我們還有另一種選項。

在如下代碼中添加一個普通的斷點,選擇 Edit Breakpoint,然后點擊 Add Action,選擇 Log Message,在輸入框中輸入 The number is: @number@。

Xcode 的正確打開方式——Debugging

運行效果如下圖所示

Xcode 的正確打開方式——Debugging

這里因為有日志輸出,所以我們可以勾選上最下面的 Automatically continue after evaluating actions,這樣這個斷點就只會安安靜靜地為我們輸出日志了。

發(fā)聲斷點

同日志信息斷點,編輯普通斷點,Action 選擇 Sound。當(dāng)觸發(fā)斷點時會發(fā)出設(shè)置的聲音。此 Action 配合 Automatically continue after evaluating actions 選項,可以做到酷炫的聽聲識 Bug。:)

總結(jié)

上述的日志信息斷點及發(fā)生斷點都是可以添加觸發(fā)條件的。通過這些斷點操作,自然是能夠極大地提升日常開發(fā)中調(diào)試代碼的效率了。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI