解析java中的debug调试之方法断点
方法断点
1 原理
停顿在方法的第一行(此时并不会执行),方法调用结束会停留在方法最后一行
2 使用步骤
2.1 在方法的声明行左键单击打上方法断点,在idea里面方法的断点的形状是菱形
2.2 在菱形上方右键,弹出一个选择菜单,这个菜单里面是默认勾上method entry(方法进入),我们这里需要把method exit(方法退出)勾上
2.3 我们开启debug模式的时候,会停顿在打了方法断点的那个方法的首行,逐步调试和行断点的调试模式保持一致
2.3.1 开启bug模式前
2.3.2 开启debug模式后
2.4 点击恢复程序(resume program)的话停留在方法的最后一行**),方便程序员清楚的知道方法的返回值到底是多少
2.4.1 点击恢复程序前
2.4.2 点击恢复程序后
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模式运行截图
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模式前
点击debug模式后
点击resume program后
会跳到方法的末尾(如果该方法没有返回值的话),因为前面选中method return,所以resume program会跳到下一个断点的位置即为方法的末尾
后面的debug逻辑和前面差不多,就不再插入图片进行赘述了