• 解析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;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    3.1.2 示例代码debug模式运行截图

    在这里插入图片描述

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

    3.2.1 示例代码
    USB接口
    package Work;
    public interface USB {
        void turnOn();
        void turnOff();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    Mouse类
    package Work;
    
    public class Mouse implements USB{
        @Override
        public void turnOn() {
            System.out.println("鼠标驱动了");
        }
    
        @Override
        public void turnOff() {
            System.out.println("鼠标关闭了");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    KeyBoard类
    package Work;
    
    public class KeyBoard implements USB{
        @Override
        public void turnOn() {
            System.out.println("键盘驱动了");
        }
    
        @Override
        public void turnOff() {
            System.out.println("键盘关闭了");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    HardDisc类
    package Work;
    
    public class HardDisc implements USB{
        @Override
        public void turnOn() {
            System.out.println("硬盘驱动了");
        }
    
        @Override
        public void turnOff() {
            System.out.println("硬盘关闭了");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    Computer类
    package Work;
    
    public class Computer {
        public void useService(USB usb){
            usb.turnOn();
            usb.turnOff();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    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());
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    3.2.2 示例代码debug模式运行截图
    点击debug模式前

    在这里插入图片描述

    点击debug模式后

    在这里插入图片描述

    点击resume program后

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

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

  • 相关阅读:
    【已解决】c++如何从0配置ffmpeg
    NLP炼丹技巧:标签平滑label smoothing
    51单片机学习笔记1 简介及开发环境
    two point(双指针)
    三、equals重写规范
    抠图专题1:抠出白色陶瓷杯(每天一个PS小项目)
    知识付费行业市场不断扩大,朝专业化、垂直化发展
    tkinter文本框小功能(6):锚点
    Python爬虫:为什么你爬取不到网页数据
    SAP MM学习笔记36 - 释放支付保留的发票
  • 原文地址:https://blog.csdn.net/SSS4362/article/details/126067094