Xcode斷點調試

關注咱們,get更多iOS技能git


原文地址shell

調試程序是瞭解應用程序意外行爲的重要過程。做爲一名iOS開發者,必需要了解如何使用斷點來調試程序,從而減小修復錯誤所花費的時間。但有時,一個簡單的斷點每每是不夠的。這篇文章將會和你們介紹通用斷點的使用,以及一些高級選項,和在使用斷點過程當中的一些Tips。xcode

Xcode不知識提供在指定行添加斷點,你也可使用一些通用的斷點用於整個項目。能夠經過xcode菜單「視圖->導航器->顯示斷點導航器」進入斷點導航器。bash

點擊這個視圖的底部的+按鈕,用來添加通用斷點:編輯器

Swift Error Breakpoint

咱們可使用這個斷點在程序拋出異常時暫停執行。先看一個例子:函數

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,程序會在拋出異常的地方暫停,這樣咱們能夠定位到異常發生的地方,以及查看堆棧信息。測試

Exception Breakpoint

在iOS開發過程當中,有時會出現崩潰,調試器沒有提供關於它的不少信息,沒法定位到問題所在。這時,若是激活此斷點,程序就會停在crash發生的地方。ui

這個斷點對於捕獲程序中的崩潰很是有用,咱們要一直開啓它。lua

Symbolic Breakpoint

若是想要在調用指定方法時暫停,這個斷點很是有用。能夠輸入任意的方法或函數,使用方法以下:spa

當調用方法iteratearray時,程序會暫停。

Test Failure Breakpoint

這個斷點是可讓程序在失敗的測試中暫停測試。這樣,咱們就能夠看出哪個失敗了。很是直截了當。

高級選項

咱們使用右鍵單擊指定斷點,並單擊「編輯斷點」來編輯斷點。

Condition

使用這個選項,咱們能夠決定調試器什麼時候暫停咱們的應用程序。如:

Action

action是指斷點知足其條件時發生的行爲。經過點擊add action來添加一個action,能夠添加多個action。

Debugger Command

能夠在調試控制檯執行LLDB指令,如po:

在控制檯會輸出:

"hello!"
複製代碼
Log Message

經過這個選項,咱們能夠自定義在控制檯打印的日誌。若是要使用變量的值,能夠經過@variable_name@這種方式來使用。

控制檯就會打印:

the number value is 3
複製代碼
Shell Command

加載指定路徑下的shell腳本,執行特定指令。

  • 定義一個shell腳本,存儲在指定路徑下。
#!/bin/bash 
echo "The number is $1"
複製代碼
  • 在斷點編輯器中指定腳本路徑和參數值

控制檯會輸出:

一般應啓用「Wait until done」以免腳本出現錯誤。 **注意:**檢查腳本權限,避免出現因爲權限問題而引發的腳本運行失敗。

AppleScript

經過AppleScript語法指定要執行的操做,與shell腳本不一樣的是,這裏直接使用代碼而非腳本路徑。

Sound

這個操做很是簡單,它容許咱們在調試器因斷點而暫停時播放聲音。它提供一個組合框來選擇不一樣類型的聲音。

Continue After Evaluating

最後一個可用的選項是「Continue After Evaluating」。啓用此選項後,斷點不會暫停執行。與操做結合使用時頗有用,由於咱們極可能會有一些不該暫停應用程序執行的操做。

Tips

一、使用調試斷點代替Print。

可使用Log Message選項打印指定內容,這樣能夠去除調試日誌,使代碼更乾淨。

二、將一些經常使用斷點,定義爲用戶斷點,這將使斷點在打開的每一個xcode項目中均可用。

User下面下會顯示全部用戶斷點:

三、經過git共享斷點。

有時在查看同事的工做流程時,你會發現他有一些很好且有用的定義斷點。與其問他設置相同斷點的指令,不如讓他經過git共享。

相關文章
相關標籤/搜索