断点与调试
1. 前言
通过前面章节的介绍,我们已经知道如何运行 Java 程序了。
现在让我们看看当程序运行达不到我们的预期的时候,我们如何进行调试,以便找出其中的 BUG。
要使用调试器对我们的代码进行调试,我们首先需要知道断点是什么以及如何设置断点。
知道如何设置了断点后,我们还需要去熟悉 Debug 视图中的执行控制命令,这样,我们才知道如何进行调试。
下面,让我们从了解断点开始,学习如何在 Eclipse 中进行调试。
2. 断点
2.1 断点是什么
当我们进行调试时,程序遇到断点的时候会被挂起(暂停),此时,我们可以对程序进行检查。这也是断点的作用。
那么,在Eclipse中,断点是什么样子的呢?
通常,我们会通过 Java编辑器中的标尺设置断点,如下图所示:
上图中红色框起来的位置就是我们的标尺区域。
2.2 添加断点
- 直接双击标尺中的行号
- 鼠标右键标尺中的行号,在弹出的菜单中进行选择。
如果要取消断点,只需要再次双击该行号。
如果要取消断点,只需要再次选择 Toggle Breakpoint 选项。
2.3 禁用断点
除了通过再次操作添加断点的方式取消断点外,我们还可以禁用断点。
断点如果禁用,那么该行代码将不会被挂起。
如菜单中所示,我们还可以通过 Shift + 双击鼠标左键 来禁用断点。
选择 disable Breakpoint 选项后,断点将由蓝色的圆圈,变成白色的圆圈:
同样,如果要恢复,只需要再次执行一遍该操作即可。
3. 调试
了解断点后,让我们来看看如何对我们的 Java 代码进行调试。
3.1 打断点
打上断点后,我们就可以开始启动调试了。
3.2 启动调试
启动调试有 3 种途径:
不管选择哪种,我们都可以启动我们的调试,下图是通过在工具栏中选择 Debug 图标的方式:
选择 Debug As -> 1 Java Application 后,我们将看到询问我们是否切换到 Debug 透视图的窗口,如下图所示:
如果我们已经处于 Debug 透视图 那么就不会出现该弹窗。
我们选择 Switch,这将帮我们打开 Debug 透视图,如下图所示:
Debug 透视图中默认有两个视图,分别是左边的 Debug 视图,右边的变量视图。
3.3 Debug 透视图
3.3.1 Debug 视图
Debug 视图显示的是我们正在调试过程中被挂起的线程的堆栈信息。
和 Debug视图 相关联的还有一些常用的按钮,如下图所示:
其中 2,3,4,5 是我们的调试中的 执行控制命令,图中标示的按钮如下:
- 这是个开关选项,如果选择打开,则跳过所有的断点。
- 恢复挂起的线程(Resume)。
- 终止被选择的调试目标(Terminate)。
- 进入当前被高亮的语句(Step Into)。
- 开始执行被高亮语句的下一个语句(Step Over) 。
- 这是个开关选项,如果选择打开,则开始使用步骤过滤器(Use Step Filters)。
除此之外我们还有三个按钮没有被亮起,这是三个也是属于调试中的执行控制命令:
现在,让我们点击 Step Over 按钮,把程序运行到第 12 行,如下图所示:
接下来,让我们把关注点放到变量视图中。
3.3.2 变量视图
变量视图显示的是调试中相关的变量信息:
我们可以看出来,变量视图分为上下两部分。
上部分就是变量的信息,包括变量名和变量值。
3.4 完成调试
通常我们会通过前面介绍的 Debug 视图中的执行控制命令来一步步地控制语句的运行,然后观察变量视图中的内容。
调试中,高亮的语句是当前被挂起的地方。
我们可以使用 Step Into 或者 Step Over 按钮进行下一条语句的执行。
当整个程序执行完,或者我们自己点击终止按钮时,调试结束。
5. 小结
本文中讲解了断点和调试的内容。
其中的重点是,我们需要了解如何设置断点和熟悉 Debug 视图。
多去使用 Debug 视图是掌握 Eclipse 调试的好办法。