Debug---尚硅谷总结

0、Debug的步骤

Debug(调试)程序步骤如下:

1 、添加断点
2 、启动调试
3 、单步执行
4 、观察变量和执行流程,找到并解决问题

 1、添加断点

        在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点。

Debug---尚硅谷总结_第1张图片

 2、启动调试

示例代码:
 

public class Debug01 {
    public static void main(String[] args) {
        //1.
        int m = 10;
        int n = 20;
        System.out.println("m = " + m + ",n = " + n);
        swap(m, n);
        System.out.println("m = " + m + ",n = " + n);
        //2.
        int[] arr = new int[] {1,2,3,4,5};
        System.out.println(arr);//地址值

        char[] arr1 = new char[] {'a','b','c'};
        System.out.println(arr1);//abc
    }

    public static void swap(int m, int n) {
        int temp = m;
        m = n;
        n = temp;
    }

}

    启动调试:IDEA提供多种方式来启动程序(Launch)的调试,

              分别是通过菜单(Run –> Debug)、图标(“绿色臭虫”)等等

        如果你还是用Run启动,那就不会出现debug效果,断点跟没有打一样:

Debug---尚硅谷总结_第2张图片

         启动调试:方法一

Debug---尚硅谷总结_第3张图片

         方法二

Debug---尚硅谷总结_第4张图片

        方法三:

Debug---尚硅谷总结_第5张图片

 代码会停留在我们第一个打断点的位置:只是走到这个断点的位置,此行代码还没有被执行:

Debug---尚硅谷总结_第6张图片

Debug---尚硅谷总结_第7张图片

Debug---尚硅谷总结_第8张图片1、 Step Over(F8):

        单步执行,进入下一步,如果当前行断点是调用一个方法,则不进入当前方法体内:


Debug---尚硅谷总结_第9张图片

蓝色高亮的那一行是我们即将要执行的语句,不是已经执行完毕的语句

Debug---尚硅谷总结_第10张图片

单步执行,如果当前行断点是调用一个方法,则不进入当前方法体内,也就是说你看不到方法内部的执行情况,这里你看不到swqp(m,n)的执行情况,此时你要用到:
Debug---尚硅谷总结_第11张图片

Debug---尚硅谷总结_第12张图片

当我们点击Step into时: 

Debug---尚硅谷总结_第13张图片

Debug---尚硅谷总结_第14张图片 再Step into一下:
Debug---尚硅谷总结_第15张图片

Debug---尚硅谷总结_第16张图片 跳出此方法:

 如果你现在在main方法中,你点击step out的话,main方法就执行结束了,结束的是当前方法!

Resume ProgramF9):恢复程序运行,但如果该断点下面还有断点则停在下一个断点上:

Debug---尚硅谷总结_第17张图片

Debug---尚硅谷总结_第18张图片

Run to CursorAlt + F9):直接跳到光标处继续调试 

Debug---尚硅谷总结_第19张图片

Debug---尚硅谷总结_第20张图片

Debug---尚硅谷总结_第21张图片

多种Debug情况介绍

行断点

断点打在代码所在的行上。执行到此行时,会停下来。我们上面的例子都是行断点

方法断点

断点设置在方法的签名上,当执行此方法时,断点可以被唤醒,也可以设置在当执行完方法退出时,断点也被唤醒:

进入方法的时候会做一个停留,你也可以设置当执行完方法的时候也做一个停留 

Debug---尚硅谷总结_第22张图片

Debug---尚硅谷总结_第23张图片

Debug---尚硅谷总结_第24张图片

Debug---尚硅谷总结_第25张图片

如果我对父类中的方法、接口中的抽象方法进行方法断点呢?

Debug---尚硅谷总结_第26张图片

当调用了子类的test方法时:(我们明明没在子类的test方法上打断点,但是也停留了)

Debug---尚硅谷总结_第27张图片

Debug---尚硅谷总结_第28张图片

同理,直接唤醒到我们接口的实现类方法的位置:

Debug---尚硅谷总结_第29张图片

你也可以对源码进行方法断点!

你可能感兴趣的:(linux,运维,服务器)