解析java中的debug调试之方法断点

方法断点

1 原理

停顿在方法的第一行(此时并不会执行),方法调用结束会停留在方法最后一行

2 使用步骤

2.1 在方法的声明行左键单击打上方法断点,在idea里面方法的断点的形状是菱形

怎么看java断点错误 java debug 断点 原理_方法断点

2.2 在菱形上方右键,弹出一个选择菜单,这个菜单里面是默认勾上method entry(方法进入),我们这里需要把method exit(方法退出)勾上

怎么看java断点错误 java debug 断点 原理_程序员必须要会的调试操作_02

2.3 我们开启debug模式的时候,会停顿在打了方法断点的那个方法的首行,逐步调试和行断点的调试模式保持一致

2.3.1 开启bug模式前

怎么看java断点错误 java debug 断点 原理_debug调试_03

2.3.2 开启debug模式后

怎么看java断点错误 java debug 断点 原理_java_04

2.4 点击恢复程序(resume program)的话停留在方法的最后一行**),方便程序员清楚的知道方法的返回值到底是多少

2.4.1 点击恢复程序前

怎么看java断点错误 java debug 断点 原理_java_05

2.4.2 点击恢复程序后

怎么看java断点错误 java debug 断点 原理_程序员必须要会的调试操作_06

3.使用场景

3.1 查看方法的逻辑和方法的返回值的时候

3.1.1 示例代码
package Work;
public class Test05 {
    public static void main(String[] args) {
        System.out.println(fn());
    }
    public static int fn(){
        int i=0;
        System.out.println("i的值为: "+(++i));
        System.out.println("i的值为: "+(++i));
        System.out.println("i的值为: "+(++i));
        System.out.println("i的值为: "+(++i));
        System.out.println("i的值为: "+(++i));
        return i;
    }
}
3.1.2 示例代码debug模式运行截图

怎么看java断点错误 java debug 断点 原理_方法断点_07

3.2 使用多态时,查看具体运行的是哪个子类(实现类)的方法

3.2.1 示例代码
USB接口
package Work;
public interface USB {
    void turnOn();
    void turnOff();
}
Mouse类
package Work;

public class Mouse implements USB{
    @Override
    public void turnOn() {
        System.out.println("鼠标驱动了");
    }

    @Override
    public void turnOff() {
        System.out.println("鼠标关闭了");
    }
}
KeyBoard类
package Work;

public class KeyBoard implements USB{
    @Override
    public void turnOn() {
        System.out.println("键盘驱动了");
    }

    @Override
    public void turnOff() {
        System.out.println("键盘关闭了");
    }
}
HardDisc类
package Work;

public class HardDisc implements USB{
    @Override
    public void turnOn() {
        System.out.println("硬盘驱动了");
    }

    @Override
    public void turnOff() {
        System.out.println("硬盘关闭了");
    }
}
Computer类
package Work;

public class Computer {
    public void useService(USB usb){
        usb.turnOn();
        usb.turnOff();
    }
}
Test05类
package Work;
public class Test05 {
    public static void main(String[] args) {
       Computer computer=new Computer();
       computer.useService(new Mouse());
       computer.useService(new KeyBoard());
       computer.useService(new HardDisc());
    }
}
3.2.2 示例代码debug模式运行截图
点击debug模式前

怎么看java断点错误 java debug 断点 原理_方法断点_08

点击debug模式后

怎么看java断点错误 java debug 断点 原理_方法断点_09

点击resume program后

会跳到方法的末尾(如果该方法没有返回值的话),因为前面选中method return,所以resume program会跳到下一个断点的位置即为方法的末尾

怎么看java断点错误 java debug 断点 原理_java_10

后面的debug逻辑和前面差不多,就不再插入图片进行赘述了