设置断点:(在想要设置断点的代码左端右键点击一下即可)
编辑断点:右键点击断点,选择EditBreakPoint...弹出如下弹框:
其中,
Condition: 返回一个布尔值,只有在布尔值为真的情况下断点才会触发
Ignore:忽略前n次断点,直到第n+1次遇到断点才触发
Action:断点触发时,Xcode执行的操作,共有六种类型,如下图所示:
- AppleScript:用于执行脚本,如display dialog “SwiftGG”弹出对话框。
- Capture GPU Frame:捕获在断点处 GPU 当前绘制的帧图,用于 OpenGL ES应用的调试。
- Debugger Command:相当于在控制台中输入的 lldb 调试命令。
- Log Message:将自定义格式、内容的信息输出到控制台,常用的占位符有:%H(断点第几次触发),%B(断点所在的方法的名字)和@expr@(输出expr的值)。
- Shell Command:接收命令文件以及相应的参数列表。 Xcode会异步执行 Shell Command。勾选 “Wait until done”表示等待 Shell 命令执行结束后再执行调试工作。
- Sound:触发断点的同时播放声音
Automatically continue after evaluating actions:勾选这个选项后,断点不会中断程序运行。
异常断点(Exception Breakpoint)
异常断点是代码出现问题导致编译器抛出异常时触发的断点。它在断点导航器中设置。点击+号,选择Exception Breakpoint选项。如下图所示
点击添加后会出现下面的小框
Exception:选项可以让你选择响应Objective-C对象抛出的异常,也可以选择响应C++对象抛出的异常。
Break:则是选择断点所接收的异常,是接收“Throw”语句抛出的异常还是Catch语句的。
由于有一些异常的出现,是在不满足某些特定条件下而导致的,比如说在复杂循环中数组越界,这个时候往往不容易根据异常信息确定错误的出处,这个时候设置异常断点便能发挥作用。
符号断点(Symbolic Breakpoint)
在断点导航器界面,点击+号,选择Add Symbolic Breakpoint选项
然后会弹出下面所示的对话框
Symbol:用来设置当前断点作用域所能识别的方法,这里面既可以是自定义的方法,也可以是系统的API方法。(注意必须表明是类方法还是成员方法)
例如:在 Symbol 一栏输入 viewDidLoad。
这样一来,在程序中所有的 viewDidLoad 方法被调用时都会触发断点。
当然,我们也可以仅仅为特定的某个类的方法添加断点。在 Symbol 一栏输入 [ClassName viewDidLoad] (Objective-C) 或 ClassName.viewDidLoad (Swift) 即可。
监控断点
我们调试程序的大部分时候都是为了监控某个变量的变化,在代码中变量出现的地方添加断点不仅累而且还可能漏掉,事后还得一个一个删掉,实在很累。
我们可以通过为变量添加监控断点来简单地做到这一点。找到变量第一次出现的地方,添加一个普通断点,进入 debug 模式后在 Variables View 中右键变量,选择 Watch 变量名。这样,每一次该变量被改变都会触发断点告知我们。
以上内容来自:http://qingbo.info/2016/08/17/xcode-debugging/