中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Xcode 的正確打開方式——Debugging

發布時間:2020-07-27 14:31:00 來源:網絡 閱讀:250 作者:卓行天下 欄目:開發技術

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

“If debugging is the process of removing bugs, then programming must be the process of putting them in.”
——Edsger W. Dijkstra

添加條件

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

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

Xcode 的正確打開方式——Debugging

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

Xcode 的正確打開方式——Debugging

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

Symbolic Breakpoint

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

Xcode 的正確打開方式——Debugging

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

Xcode 的正確打開方式——Debugging

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

監控斷點

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

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

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

Xcode 的正確打開方式——Debugging

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

Xcode 的正確打開方式——Debugging

日志信息斷點

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

但這一調試方式也有很明顯缺陷:

  1. 無法在運行時添加

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

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

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

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

Xcode 的正確打開方式——Debugging

運行效果如下圖所示

Xcode 的正確打開方式——Debugging

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

發聲斷點

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

總結

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


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乡宁县| 武定县| 会东县| 额济纳旗| 安陆市| 西昌市| 麻栗坡县| 习水县| 河西区| 宁明县| 乌拉特中旗| 临潭县| 洪湖市| 恭城| 泰安市| 东乡族自治县| 图片| 利津县| 庆阳市| 镶黄旗| 保康县| 清流县| 英德市| 镇平县| 资源县| 罗源县| 威海市| 鄂尔多斯市| 象山县| 阿荣旗| 峡江县| 安义县| 顺义区| 玉门市| 尤溪县| 晋城| 碌曲县| 平和县| 肥乡县| 泸州市| 湖口县|