• 解析java在的debug模式之属性断点调试


    解析java在的debug模式之属性断点调试

    1 原理

    停顿在读写属性的代码行

    2 使用步骤

    2.1 在类体中的属性代码行处选择合适的位置进行左键单击,属性断点的图标是眼睛形状。当出现眼睛形状时,意味着属性断点打上成功

    2.1.1 打属性断点的位置

    在这里插入图片描述

    2.1.2 打完属性断点之后的效果图

    在这里插入图片描述

    2.2 右键在眼睛图标上单击,弹出一个选项菜单,默认是勾选field modification(属性修改),我们需要手动勾选field acess(属性获取)

    在这里插入图片描述

    2.3 点击debug调试模式后,会停顿在修改属性的那一行(先调用构造方法进行初始化赋值)

    2.3.1 点击debug调试模式

    在这里插入图片描述

    2.3.2 点击debug调试模式后

    在这里插入图片描述

    2.4 点击resume program后,会停顿在下一次属性读写的方法的首行

    在这里插入图片描述

    3 使用场景

    你需要监测属性的读写情况的时候用

    4 示例代码

    Dog类

    package Work;
    public class Dog {
        private String name;
        //名字
        private String type;
        //类型
        private int age;
        //年龄
    
        public Dog() {
        }
    
        public Dog(String name, String type, int age){
            this.name = name;
            this.type = type;
            setAge(age);
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age){
            if(age<0||age>10){
                System.out.println("年龄非法");
            }
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Dog{" +
                    "name='" + name + '\'' +
                    ", type='" + type + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    Person类

    package Work;
    public class Person {
        private String name;
        //有一个Dog类型的属性
        private Dog dog;
    
        public Person(String name, Dog dog) {
            this.name = name;
            this.dog = dog;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Dog getDog() {
            return dog;
        }
    
        public void setDog(Dog dog) {
            this.dog = dog;
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", dog=" + dog +
                    '}';
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    Test05类

    package Work;
    public class Test05 {
        public static void main(String[] args) {
           //检测传入的引用数据类型里面的具体参数变化
          Person p=new Person("张三",new Dog("德福","金毛",7));
           p.getDog().setAge(10);
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5 示例代码debug模式截图

    5.1 在引用类型的属性左侧点上属性断点并勾上Field access

    在这里插入图片描述

    勾选上Field Access
    在这里插入图片描述

    5.2 点击debug模式后会跳转到该属性第一次读写的位置

    在这里插入图片描述

    5.3 点击resume program,会跳转到下一次属性读写的位置

    在这里插入图片描述

    5.4 再点击resume program,发现后面已经读写属性了,程序就会按照正常的逻辑将后面的代码跑完

    前提条件

    在这里插入图片描述

    因此,第二次点击resume program的效果如下所示

    在这里插入图片描述

  • 相关阅读:
    java基于ssm的房屋租赁出租管理系统
    想不到吧,Seata分布式事务也会出现ABA问题
    前端常见兼容性问题以及解决方法
    Synopsys Sentaurus TCAD系列教程之-- Sdevice《5》Plot模块
    git config pull.rebase false
    首次开通社交账号亲自招聘人才 周星驰都在关注的Web3 你知道是什么吗?
    《垃圾回收算法手册 自动内存管理的艺术》——引用计数与垃圾回收器的比较(笔记)
    Pai到用时方恨少
    Fiddler(四) - http请求结果分析&认识菜单
    【链表】翻转链表
  • 原文地址:https://blog.csdn.net/SSS4362/article/details/126077198