关注咱们,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共享。