Xcode调试技巧
一. 断点
Xcode支持很多种不同类型的断点,包括普通断点、符号断点、异常断点、watch断点、OpenGL ES Error 断点和Test Failure 断点。(后两者不常用)
1. 普通断点:
下普通断点很简单,找到你要下断点的代码行,点击编辑区左边的行数处即可;或者使用快捷键直接command + \
设置符号断点可以输入类名+方法名,也可输入方法名,Xcode会自动匹配在不同类中同名的方法进行断点。
特点: 一旦所填写的方法被调用,就会暂停。
3.异常断点:
异常断点在调试时如果程序抛出异常,导致程序退出,就会暂停。导航区 -> 断点tab –> 左下角加号 -> Add Exception Breakpoint
特点: 一旦程序异常就暂停,能立马定位问题,为比较常用的一种断点。
4. watch断点
watch断点就是当某个变量发生改变的时候触发的断点。在Xcode的watch窗口-> 右键需要watch的变量 -> watch “XXX”
当所watch的值发生变化时调试器会自动暂停。并打印信息
**特点: 当要观察某个值是否发生变化,可使用watch断点 **
5. 其他断点(不常用)
OpenGL ES Error Breakpoint 以及 Test Failure Breakpoint
OpenGL ES Error Breakpoint :主要是OpenGL ES的断点调试
Test Failure Breakpoint :这个类型的断点会在test assertion 失败的时候暂停程序的执行。
6. 编辑断点:
右键普通断点 -> Edit Breakpoint 添加条件
断点的属性以及说明
属性 | 说明 |
---|---|
Condition | 输入条件表达式,满足条件的时候断点就会生效。 |
Ignore | 在这里可以设置忽略断点次数。 |
Action | 一些断点触发时的操作。 |
Options | 勾选Automatically continue after evaluating actions之后程序会在断点产生后继续运行。 |
7. 断点后的action:
断点后的action,其实就是当断点被触发可以执行一些操作。右键断点 -> Edit breakpoint -> Add action
Action的类型很多,有Debugger Command、Log Message、Apple Script、Shell Command等,常用的有Debugger Command和Log Message
Action对于调试是非常有用的,比如你需要在断点的地方频繁打印某一对象时,你不用新加log,然后重新编译,直接加一条Debugger Command就可以,下图为打印self.string信息
7.1 用于action的Debugger Command常用命令
1.po命令 : 打印对象信息
2.expr命令:可以在调试时动态的执行表达式,同时打印出结果。常用来动态修改变量的值。
3.call命令 :动态调用函数,可以在不增加代码,不重新编译的情况下动态调用一个方法。
二. UI调试
1.控件信息
可以使用上述的po命令以及expr命令来查看、修改控件属性。
2.快速预览
Xcode5之后支持在调试时对变量进行快速预览,调试时将鼠标放在变量上,然后点击快速预览按钮即可看到控件的显示。
3. 查看整体UI层级结构
点击在Xcode的watch窗口上方的debug view hierarchy 按钮
之后便可以观察当前应用窗口的层级结构
注意:在面板底部左侧有两个按钮。如下图所示,取消对这两个按钮的选定,否则会隐藏一些视图。
3.1 探索视图层次
对于如何查看某个视图,可以选定查看的视图,然后观察跳转栏(Jump Bar)比如当选定最底部的视图,则Jump Bar显示
当各个视图之间间距太小,可以使用左下方的slider来控制视图间的间距.
同时若滚动右下方的滑块,则可以隐藏不同层次的视图
3.2 查看视图
按下cmd + 6 调出导航栏的Debug navigator,选定要查看的视图。或者直接在编辑区选定。
接着使用cmd + option + 4打开工具区的Size Inspector,便可查看该视图的边界、位置、锚点以及Auto Layout约束列表。
也可以通过cmd + option + 3切换至Object inspector。你会看到一个选定对象的各项信息,比如背景颜色,tag等等。