一、功能介绍
1. Resume programme
对应上图中的 模块1
,当程序执行到断点处将停止,通过 Resume programme
即直接略过中间代码跳到一处断点,若后续不存在断点则执行到程序结束。
如在下述中分别在 1,3
输出处断点,当程序运行 println(1)
时将暂停,执行 Resume programme
后则将在 println(3)
处再次暂停,再次执行 Resume programme
则会执行剩余代码然后退出。
public static void main(String[] args) {
System.out.println(1); // 此段断点
System.out.println(2);
System.out.println(3); // 此段断点
System.out.println(4);
}
2. Step Over
对应上图中的 模块2
,即从断点处开始逐行执行,若执行的代码为方法并不会进入内部而是直接得到该方法执行结果。
同样在 println(1)
处断点,当程序运行 println(1)
时将暂停,执行 Step Over
后则将在 println(2)
处再次暂停,再次执行 Step Over
则将在 println(3)
处暂停,即逐行向下执行。
public static void main(String[] args) {
System.out.println(1); // 此段断点
System.out.println(2);
System.out.println(3);
}
3. Step Into
对应上图中的 模块3
,同样是从断点处开始逐行执行,但是与 Step Over
不同的是 Step Into
若执行的当前行若是方法则会进入方法内部继续逐行断点。
如下中在 test()
处断点,程序运行后将在该行暂停,执行 Step Into
后将跳到 println(2)
处暂停,若不存在方法嵌套则继续选择其将类似 Step Over
逐行向下执行。
public static void main(String[] args) {
System.out.println(1);
test(); // 此段断点
System.out.println(4);
}
public static void test() {
System.out.println(2);
System.out.println(3);
}
4. Step out
对应上图中的 模块4
,用于略过当前执行的方法内剩余代码执行过程,若存在方法内后续仍存在断点则执行到断点处。如在不存在其它断点的情况下通过 Step Into
进入某个方法的之后触发 Step out
则会直接执行剩余代码并返回至 Step Into
入口的下一行。
如下中在 println(2)
处断点,程序启动后将在该行暂停,执行 Step out
后将会执行 test()
方法内剩余代码转至 println(4)
处暂停。
public static void main(String[] args) {
System.out.println(1);
test();
System.out.println(4);
}
public static void test() {
System.out.println(2); // 此段断点
System.out.println(3);
}
5. View Breakponints
对应上图中的 模块5
,用于查看当前代码中已经添加的断点。
6. Mute Breakpoint
对应上图中的 模块6
,通过触发 Mute Breakpoint
则当前代码中的所有断点将不再生效,意味着执行到断点处不会停止。
二、示例演示
为了更好的介绍断点作用效果下面通过一个具体示例进行介绍。
1. 测试代码
在开始之前准备一个简单的测试代码,完整代码如下:
public class MyTest {
@Test
public void demo() {
System.out.println("Example start.");
method1();
method2();
System.out.println("Example finish.");
}
public void method1() {
System.out.println("Into method 1.");
method2();
System.out.println("Exit method 1.");
}
public void method2() {
System.out.println("Into method 2.");
System.out.println("Exit method 2.");
}
}
2. 示例分析
(1) 测试一
在上述示例代码 第6行
处打上断点并执行 demo
模块,第一大点中不同功能触发效果如下:
- 若执行
Step Over
: 断点将移至第7行
,若继续触发则会逐行向下执行,但在执行method1()
等方法时并不会进入其方法体。 - 若执行
Step Into
: 断点将移至方法method1()
内,即上述中的第12行
。 - 若执行
Step Out
: 将从第6行
开始执行剩余代码并返回。
(2) 测试二
同样在 第6行
打上断点执行后 demo
模块。
- 在触发断点后选择
Step Into
进入method1()
方法体内。 - 进入
method1()
后触发Step Out
则会返回到demo()
中的第7行
,即Step Into
入口的下一行。
(3) 测试二
分别在 第6行
和 第14行
打上断点执行后 demo
模块。
- 在触发断点后选择
Step Into
进入method1()
方法体内。 - 进入
method1()
后触发Step Out
则会在第14行
处停止,即若当前方法内存在断点则不会退出方法而是在断点处停止。