關注咱們,get更多iOS技能git
原文地址shell
調試程序是瞭解應用程序意外行爲的重要過程。做爲一名iOS開發者,必需要了解如何使用斷點來調試程序,從而減小修復錯誤所花費的時間。但有時,一個簡單的斷點每每是不夠的。這篇文章將會和你們介紹通用斷點的使用,以及一些高級選項,和在使用斷點過程當中的一些Tips。xcode
Xcode不知識提供在指定行添加斷點,你也可使用一些通用的斷點用於整個項目。能夠經過xcode菜單「視圖->導航器->顯示斷點導航器」進入斷點導航器。bash
點擊這個視圖的底部的+按鈕,用來添加通用斷點:編輯器
咱們可使用這個斷點在程序拋出異常時暫停執行。先看一個例子:函數
enum IteratorErrors: Error {
case notEnoughOddNumbers
case notEnoughEvenNumbers
}
final class Iterator {
private var oddNumbersCount = 0
private var evenNumbersCount = 0
init() {
do {
try iterateArray()
} catch {}
}
func iterateArray() throws {
[ 1, 2, 3, 4, 5, 6, 7, 8 ].forEach { (number) in
if (number % 2 == 0) {
evenNumbersCount += 1
} else {
oddNumbersCount += 1
}
}
if oddNumbersCount < 100 {
throw IteratorErrors.notEnoughOddNumbers
}
if evenNumbersCount < 100 {
throw IteratorErrors.notEnoughEvenNumbers
}
}
}
複製代碼
若是添加Swift Error Breakpoint,程序會在拋出異常的地方暫停,這樣咱們能夠定位到異常發生的地方,以及查看堆棧信息。測試
在iOS開發過程當中,有時會出現崩潰,調試器沒有提供關於它的不少信息,沒法定位到問題所在。這時,若是激活此斷點,程序就會停在crash發生的地方。ui
這個斷點對於捕獲程序中的崩潰很是有用,咱們要一直開啓它。lua
若是想要在調用指定方法時暫停,這個斷點很是有用。能夠輸入任意的方法或函數,使用方法以下:spa
當調用方法iteratearray時,程序會暫停。
這個斷點是可讓程序在失敗的測試中暫停測試。這樣,咱們就能夠看出哪個失敗了。很是直截了當。
咱們使用右鍵單擊指定斷點,並單擊「編輯斷點」來編輯斷點。
使用這個選項,咱們能夠決定調試器什麼時候暫停咱們的應用程序。如:
action是指斷點知足其條件時發生的行爲。經過點擊add action來添加一個action,能夠添加多個action。
能夠在調試控制檯執行LLDB指令,如po:
在控制檯會輸出:
"hello!"
複製代碼
經過這個選項,咱們能夠自定義在控制檯打印的日誌。若是要使用變量的值,能夠經過@variable_name@這種方式來使用。
控制檯就會打印:
the number value is 3
複製代碼
加載指定路徑下的shell腳本,執行特定指令。
#!/bin/bash
echo "The number is $1"
複製代碼
控制檯會輸出:
一般應啓用「Wait until done」以免腳本出現錯誤。 **注意:**檢查腳本權限,避免出現因爲權限問題而引發的腳本運行失敗。
經過AppleScript語法指定要執行的操做,與shell腳本不一樣的是,這裏直接使用代碼而非腳本路徑。
這個操做很是簡單,它容許咱們在調試器因斷點而暫停時播放聲音。它提供一個組合框來選擇不一樣類型的聲音。
最後一個可用的選項是「Continue After Evaluating」。啓用此選項後,斷點不會暫停執行。與操做結合使用時頗有用,由於咱們極可能會有一些不該暫停應用程序執行的操做。
一、使用調試斷點代替Print。
可使用Log Message選項打印指定內容,這樣能夠去除調試日誌,使代碼更乾淨。
二、將一些經常使用斷點,定義爲用戶斷點,這將使斷點在打開的每一個xcode項目中均可用。
User下面下會顯示全部用戶斷點:
三、經過git共享斷點。
有時在查看同事的工做流程時,你會發現他有一些很好且有用的定義斷點。與其問他設置相同斷點的指令,不如讓他經過git共享。