
2.4 调试程序
在程序开发中,错误是不可避免的,特别是在使用新的语言或新的开发工具时。遇到了错误就要系统地查找到底是哪里做错了。这种查找程序错误的过程叫作调试。下面主要讲解如何在Xcode 7中调试Hello World项目中的程序。
1. 添加断点
调试程序就要使用到Xcode 7的调试器。调试器是位于开发者编写的代码和操作系统之间的程序。为程序添加断点后,就启动了调试器,对程序进行调试。断点是调试器应该停止程序运行的地方,并让开发者进行检查。要添加断点,首先选择想要让程序停止的一行代码,然后选择“Degbug| Breakpoints|Add Breakpoint at Current Line”命令添加新断点。之后会在添加断点的代码最左边看到一个蓝色箭头,这就是一个新断点,如图2.15所示。

图2.15 新断点
当然Xcode也提供了更快捷的方法来添加新断点。在想要让程序停止的一行代码左侧单击一下,即可添加新的断点。
2. 运行程序
单击“运行”按钮后,程序就会运行。这时运行的程序会停止在断点所在的位置处,并且此代码行会出现绿色箭头,表示现在程序运行到的位置,如图2.16所示。

图2.16 运行程序
3. 断点导航
在程序停止后,就会出现程序调试信息窗口,里面显示了一些调试信息。在程序调试信息窗口顶端,会出现断点导航。调试窗口如图2.17所示。

图2.17 程序调试信息窗口
- “Dectivate breakpoints”按钮:启用/禁止所有断点。
- “Continue program execution”按钮:继续执行当前的代码,如果有下一个断点,就停止在下一个断点上。
- “Step over”按钮:执行下一个代码。如果当前行是方法调用,则不会进入方法内部。
- “Step in”按钮:进入方法内部。
- “Step out”按钮:跳过当前方法,即执行到当前方法的末尾。
- “Debug View Hierarchy”按钮:调试视图页面。单击此按钮会展现当前所有视图的层级、大小、位置等信息。
这时,单击断点导航中的“Continue program execution”按钮,继续执行当前的代码,如果这时程序出现错误,就不会跳到下一断点处,如果程序没有问题就会继续向下执行,现在只有一个断点,单击此按钮,程序会输出最后的结果。
4. 删除或废弃断点
如果程序没有问题,那么,就要将程序中设置的断点进行删除或者废弃。删除断点常用的方法有三种。
- 右键单击设置的断点,在弹出的快捷菜单中选择“Delete Breakpoint”命令。
- 选中设置断点的行,在Xcode 7的菜单栏中选择“Debug|Breakpoints|Remove Breakpoint at Current Line”命令。
- 选择断点,将其拖动到别的地方。这时,此断点就删除了。
要废弃断点(让断点暂时无法起作用),只需要单击断点。这时,断点就由深蓝色变为了浅蓝色。浅蓝色的断点就说明该断点已被废弃,如图2.18所示。

图2.18 废弃断点