普通断点调试早已经成为猿的必备技能,这里介绍几个特殊断点做为必备技能的强化。
自定义断点:
Xcode断点->右键->Edit Breakpoint… 添加自定义断点,如下图所示:
Condition:Action 执行的条件
Ignore:断点忽略的次数,这个对遍历或循环里的断点非常有用
Action:满足Condition执行的Action,Action类型有六种,可以同时添加多个Action(Action 后面的“+、-”号操作)。
- AppleScript:OS X内置脚本语言,把一些重复繁琐并且耗费时间的任务自动化。
- Capture GPU Frame: 捕获 Gpu Frame,具体用法可参考。
- Debugger Command:Debugger指令 ,调试窗口可输入指令,比如 p、po指令
- Log Message:文本日志信息,满足Condition会在调试窗口输出填写日志信息
- Shell Command:shell 脚本
- Sound:和Log Message 类似的提示音,试了一下果真是用来调戏的
Options:执行完Action后是否跳过断点
异常断点 (Exception Breakpoint)
用来定位异常抛出具体位置,Xcode command + 7,打开断点列表,左下角+号添加,如下图,异常断点也可以自定义。
Exception:抛出异常的代码语言,有Objective-C和C++可选,默认全部。
Break:在异常抛出还是异常捕获的时候Break。
其他选项和上面自定义断点一样。
符号断点(Symbolic Breakpoint)
非常强大的调试断点,可以针对某个方法设置断点,不仅能调试自己的代码实现,还能调试系统层面实现的函数和方法。符号断点的添加方式和异常断点一样,如下图:
相对普通断点,多了前两项Symbol、Module
Symbol:符号,如:-[UIViewController viewDidAppear:],+[UIView commitAnimations],‘-’为实例方法,‘+’为类方法。
Module:调试模块,限制断点的范围。
还有一些其他类型的断点,OpenGL ES Error Breakpoint、Test Failure Breakpoint、Swift Error Breakpoint,不是很常用,先mark一下。