Xcode使用断点调试

设置断点:(在想要设置断点的代码左端右键点击一下即可)


编辑断点:右键点击断点,选择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的值)。
    2016-08-18_Screen Shot 2016-08-17 at 23.59.53.png
  • Shell Command:接收命令文件以及相应的参数列表。 Xcode会异步执行 Shell Command。勾选 “Wait until done”表示等待 Shell 命令执行结束后再执行调试工作。
  • Sound:触发断点的同时播放声音

Automatically continue after evaluating actions:勾选这个选项后,断点不会中断程序运行。

异常断点(Exception Breakpoint)

异常断点是代码出现问题导致编译器抛出异常时触发的断点。它在断点导航器中设置。点击+号,选择Exception Breakpoint选项。如下图所示

2016-08-17_Screen Shot 2016-08-17 at 23.36.00.png

点击添加后会出现下面的小框

2016-08-17_Screen Shot 2016-08-17 at 23.43.49.png

Exception:选项可以让你选择响应Objective-C对象抛出的异常,也可以选择响应C++对象抛出的异常。

Break:则是选择断点所接收的异常,是接收“Throw”语句抛出的异常还是Catch语句的。

由于有一些异常的出现,是在不满足某些特定条件下而导致的,比如说在复杂循环中数组越界,这个时候往往不容易根据异常信息确定错误的出处,这个时候设置异常断点便能发挥作用。

符号断点(Symbolic Breakpoint)

在断点导航器界面,点击+号,选择Add Symbolic Breakpoint选项

2016-08-17_Screen Shot 2016-08-17 at 23.47.24.png

然后会弹出下面所示的对话框

2016-08-17_Screen Shot 2016-08-17 at 23.48.10.png

Symbol:用来设置当前断点作用域所能识别的方法,这里面既可以是自定义的方法,也可以是系统的API方法。(注意必须表明是类方法还是成员方法)

例如:在 Symbol 一栏输入 viewDidLoad。
这样一来,在程序中所有的 viewDidLoad 方法被调用时都会触发断点。

2016-08-18_Screen Shot 2016-08-18 at 00.30.17.png

当然,我们也可以仅仅为特定的某个类的方法添加断点。在 Symbol 一栏输入 [ClassName viewDidLoad] (Objective-C) 或 ClassName.viewDidLoad (Swift) 即可。

监控断点

我们调试程序的大部分时候都是为了监控某个变量的变化,在代码中变量出现的地方添加断点不仅累而且还可能漏掉,事后还得一个一个删掉,实在很累。

我们可以通过为变量添加监控断点来简单地做到这一点。找到变量第一次出现的地方,添加一个普通断点,进入 debug 模式后在 Variables View 中右键变量,选择 Watch 变量名。这样,每一次该变量被改变都会触发断点告知我们。

2016-08-17_Screen Shot 2016-08-17 at 23.55.10.png

以上内容来自:

http://qingbo.info/2016/08/17/xcode-debugging/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值