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

解析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逻辑和前面差不多,就不再插入图片进行赘述了

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSS4362

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值