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共享。

相关文章
相关标签/搜索