Debug 断点调试详解

Debug断点调试功能

一、断点简介

  • 程序运行过程中执行到断点,程序就会暂停在断点的代码处,不会自动继续向下运行,可以根据程序员的指令分析之后的代码流程

  • 在代码行的最前面单击即可设置断点

    首先讲述行断点,所以此时的断点应该打在方法体内部的代码行上,而不是方法的声明处

    image-20210409161553096
  • 以Debug模式启动程序即可开启断点调试

    image-20210409161559552
  • 可以同时设置多个断点

二、Debug控制面板

  • 以Debug模式启动程序之后自动弹出Debug控制面板:

    image-20210409161611783
  • 控制面板的基本介绍

    image-20210409161620307

三、Debug按钮的使用

对Debug按钮的整体介绍:(后面会逐一详解)

按钮 说明
(Alt + F10):如果处于其他代码行或页面,点击这个按钮可回到此时Debug正在执行的代码行
(F8):步过,代码逐行向下执行,如果这一行上有方法则自动执行方法不会进入方法内部
image-20210409161745556 (F7):步入,如果当前行有方法,可以进入方法内部;一般用于进入自定义方法内,不会进入官方类库的方法体
(Alt + Shift + F7):强制步入,能进入任何方法体,包括自定义方法和类库方法
(Shift + F8):步出,自动执行完此方法体内的剩余代码并从方法体内部退出到方法调用处的下一代码行,表示此方法已执行完
(无快捷键) 回退断点,退出方法体至方法调用处,此方法不会执行完,可以再次进入此方法
(Alt + F9):运行到光标处,无需打断点,将光标定在某一代码行,点击此按钮直接执行到此代码行
(Alt + F8):计算表达式,可以解析指定的表达式(语句),并执行此表达式

1. 跳转到当前Debug所在行

  • 对应的调试按钮(Alt + F10)

  • 作用

    • 如果处于其他代码行或页面,点击这个按钮可回到此时Debug正在执行的代码行
  • 使用步骤

    image-20210409161847620 image-20210409161901367 image-20210409161915983

2. 步过

  • 步过调试按钮(F8)

  • 作用

    • 代码逐行向下执行,如果这一行上有方法则自动执行方法不会进入方法内部
  • 使用步骤

    image-20210409161941027
  • 注意:断点执行过程中所执行到的行(比如上图有蓝色条框的代码行),表示的是此代码行还没有被执行,由编程人员选择进入此方法还是步过此方法

3. 步入

  • 步入调试按钮(F7)

  • 作用

    • 如果当前行有方法,可以进入方法内部;一般用于进入自定义方法内,不会进入官方类库的方法体
  • 使用步骤

    image-20210409161959870

4. 强制步入

  • 强制步入调试按钮(Alt + Shift + F7)

  • 作用

    • 能进入任何方法体,包括自定义方法和类库方法
  • 使用步骤

    image-20210409162013281 image-20210409162025521

5. 步出

  • 步出调试按钮(Shift + F8)

  • 作用

    • 自动执行完此方法体内的剩余代码并从方法体内部退出到方法调用处的下一代码行,表示此方法已执行完
  • 使用步骤

    image-20210409162106696 image-20210409161007053

6. 回退断点

  • 回退断点调试按钮

  • 作用

    • 退出方法体至方法调用处,此方法不会执行完,可以再次进入此方法
    • 与步出的区别
      • 步出会执行完此方法然后退出,不可再次进入此方法(如果想再次进入方法必须重新Debug)
      • 回退不会执行完此方法,而是退回到方法的调用处,还可再次进入此方法
  • 使用步骤

    image-20210409162128912 image-20210409162138192

7. 运行到光标处

  • 运行到光标处按钮 (F9)

  • 作用

    • 无需打断点,将光标定在某一代码行,点击此按钮直接执行到此代码行
  • 使用步骤

    image-20210409162223930 image-20210409162233779

8. 计算表达式

  • 计算表达式按钮(Alt + F8)

  • 作用

    • 解析表达式,执行表达式的代码
      • 无需修改代码,可以临时修改参数的值
      • 获取指定表达式的值
  • 使用步骤

    image-20210409162253672

    如果想要测试董事长,则点击计算表达式按钮临时修改参数值:

    image-20210409161138215

    表达式修改为get方法,即可得到此对象的值

    计算表达式的功能并不单单限于以上两种方式,可以解析任何表达式,只要符合Java语法即可

9. 其余按钮介绍

9.1 重启这次Debug

image-20210409162309523

9.2 程序向下运行,直到下一个断点才停下来,如果没有断点,则整个程序会直接执行完毕

image-20210409162322463

9.3 进入断点的管理面板(View BreakPoints)

image-20210409161315930

启动Debug调试:

image-20210409162457305

9.4 临时禁用所有断点

image-20210409162605569

9.5 停止Debug过程

image-20210409163106347

注意:在方法内部停止了程序,此方法不会中断,只有执行完此方法程序才会停止(进入了方法中只有执行完方法才可以出去)

四、Debug其他功能

1. 查看某一变量的值

image-20210409163133990

输入所要查看的变量:

image-20210409163148934

变量的值将会显示在面板上:

image-20210409163156604

2. 条件断点

  • 条件断点简介

    • 当条件满足时此断点才会生效
  • 使用步骤

    image-20210409163227275

    让程序继续运行,直至条件满足才进入断点:

    image-20210409163235714

3. 多线程调试

  • 概念

    • 断点右键

      image-20210409163247795
    • 如果为ALL的话,则所有线程都会显示在面板上,同时控制所有线程,不利于观察一个线程的执行过程

    • 如果为Thread的话,只会显示一个线程的断点调试过程

      • 所有的线程都会执行到断点处停止,只不过是只能控制其中一个线程,想要控制其他线程必须切换线程
  • 使用步骤

    image-20210409163316335

    在面板可以切换要显示的线程以及显示各线程的状态:

    image-20210409163338277

4. 强制方法返回

  • 概念

    • 当方法执行到一半时(比如出现了异常),不想继续执行此方法(此方法中剩余的代码都不执行),直接退回至调用处的下一行
  • 使用步骤

    image-20210409163959362

五、断点分类

1. 行断点

  • 上述讲述的就是行断点,断点打在方法体内,而不是方法的声明处

2. 详细断点(源断点)

  • 使用 shift + 鼠标左键,断点打在方法体内,而不是方法的声明处

    image-20210409164444655

3. 方法断点

3.1 作用一

  • 会自动的在进入方法或者离开方法时设置断点(不可见的两个断点),可以直接从方法的第一行执行到方法的最后一行,方便观察方法体内的参数、变量的初始值和最终值,而不关心变化过程

  • 在方法的声明处打断点

    image-20210409164255167
  • 进入Breakpoints中,设置断点在进入方法时还是离开方法时

    image-20210409202213960

3.2 作用二

  • 自动的跳转到方法的实现类

    • 为接口中的方法添加方法断点

      image-20210409164534848
    • 没有在实现类中添加任何断点

      image-20210409164552718
    • 方法的调用处也没有添加任何断点

      image-20210409164759958
    • 以Debug方式启动程序

      image-20210409164713713
    • 使用场景:接口的实现类有很多个,不知道是执行哪一个实现类的方法时,可以在接口的方法打一个方法断点,会自动的跳转到对应的实现类的方法

4. 异常断点

  • 无需显示设置异常断点的位置,程序会自动的在产生指定异常的位置停止下来

  • 使用步骤

    • 首先进入断点的管理面板(BreakPoints),添加异常断点

      image-20210409165046836 image-20210409165107786 image-20210409165133780
    • 以Debug方式启动程序,会自动的在产生异常的位置停顿

      image-20210409164918575

5. 字段断点

  • 监控某一字段(属性)在整个程序中执行的流程

    • 会自动的在此属性值被读取或者被修改的位置停顿下来,每有一次读取或值变化就会停顿一次
  • 在字段所在的代码行添加字段断点

    image-20210409165228068
  • 进入Breakpoints中,设置程序停顿的条件

    image-20210409201638723
  • 以Debug方式启动程序

    image-20210409165350901 image-20210409165450498

六、JDK1.8 Stream调试

image-20210409165554521 image-20210409165645915

Debug断点调试功能

一、断点简介

  • 程序运行过程中执行到断点,程序就会暂停在断点的代码处,不会自动继续向下运行,可以根据程序员的指令分析之后的代码流程

  • 在代码行的最前面单击即可设置断点

    首先讲述行断点,所以此时的断点应该打在方法体内部的代码行上,而不是方法的声明处

    image-20210409161553096
  • 以Debug模式启动程序即可开启断点调试

    image-20210409161559552
  • 可以同时设置多个断点

二、Debug控制面板

  • 以Debug模式启动程序之后自动弹出Debug控制面板:

    image-20210409161611783
  • 控制面板的基本介绍

    image-20210409161620307

三、Debug按钮的使用

对Debug按钮的整体介绍:(后面会逐一详解)

按钮 说明
(Alt + F10):如果处于其他代码行或页面,点击这个按钮可回到此时Debug正在执行的代码行
(F8):步过,代码逐行向下执行,如果这一行上有方法则自动执行方法不会进入方法内部
image-20210409161745556 (F7):步入,如果当前行有方法,可以进入方法内部;一般用于进入自定义方法内,不会进入官方类库的方法体
(Alt + Shift + F7):强制步入,能进入任何方法体,包括自定义方法和类库方法
(Shift + F8):步出,自动执行完此方法体内的剩余代码并从方法体内部退出到方法调用处的下一代码行,表示此方法已执行完
(无快捷键) 回退断点,退出方法体至方法调用处,此方法不会执行完,可以再次进入此方法
(Alt + F9):运行到光标处,无需打断点,将光标定在某一代码行,点击此按钮直接执行到此代码行
(Alt + F8):计算表达式,可以解析指定的表达式(语句),并执行此表达式

1. 跳转到当前Debug所在行

  • 对应的调试按钮(Alt + F10)

  • 作用

    • 如果处于其他代码行或页面,点击这个按钮可回到此时Debug正在执行的代码行
  • 使用步骤

    image-20210409161847620 image-20210409161901367 image-20210409161915983

2. 步过

  • 步过调试按钮(F8)

  • 作用

    • 代码逐行向下执行,如果这一行上有方法则自动执行方法不会进入方法内部
  • 使用步骤

    image-20210409161941027
  • 注意:断点执行过程中所执行到的行(比如上图有蓝色条框的代码行),表示的是此代码行还没有被执行,由编程人员选择进入此方法还是步过此方法

3. 步入

  • 步入调试按钮(F7)

  • 作用

    • 如果当前行有方法,可以进入方法内部;一般用于进入自定义方法内,不会进入官方类库的方法体
  • 使用步骤

    image-20210409161959870

4. 强制步入

  • 强制步入调试按钮(Alt + Shift + F7)

  • 作用

    • 能进入任何方法体,包括自定义方法和类库方法
  • 使用步骤

    image-20210409162013281 image-20210409162025521

5. 步出

  • 步出调试按钮(Shift + F8)

  • 作用

    • 自动执行完此方法体内的剩余代码并从方法体内部退出到方法调用处的下一代码行,表示此方法已执行完
  • 使用步骤

    image-20210409162106696 image-20210409161007053

6. 回退断点

  • 回退断点调试按钮

  • 作用

    • 退出方法体至方法调用处,此方法不会执行完,可以再次进入此方法
    • 与步出的区别
      • 步出会执行完此方法然后退出,不可再次进入此方法(如果想再次进入方法必须重新Debug)
      • 回退不会执行完此方法,而是退回到方法的调用处,还可再次进入此方法
  • 使用步骤

    image-20210409162128912 image-20210409162138192

7. 运行到光标处

  • 运行到光标处按钮 (F9)

  • 作用

    • 无需打断点,将光标定在某一代码行,点击此按钮直接执行到此代码行
  • 使用步骤

    image-20210409162223930 image-20210409162233779

8. 计算表达式

  • 计算表达式按钮(Alt + F8)

  • 作用

    • 解析表达式,执行表达式的代码
      • 无需修改代码,可以临时修改参数的值
      • 获取指定表达式的值
  • 使用步骤

    image-20210409162253672

    如果想要测试董事长,则点击计算表达式按钮临时修改参数值:

    image-20210409161138215

    表达式修改为get方法,即可得到此对象的值

    计算表达式的功能并不单单限于以上两种方式,可以解析任何表达式,只要符合Java语法即可

9. 其余按钮介绍

9.1 重启这次Debug

image-20210409162309523

9.2 程序向下运行,直到下一个断点才停下来,如果没有断点,则整个程序会直接执行完毕

image-20210409162322463

9.3 进入断点的管理面板(View BreakPoints)

image-20210409161315930

启动Debug调试:

image-20210409162457305

9.4 临时禁用所有断点

image-20210409162605569

9.5 停止Debug过程

image-20210409163106347

注意:在方法内部停止了程序,此方法不会中断,只有执行完此方法程序才会停止(进入了方法中只有执行完方法才可以出去)

四、Debug其他功能

1. 查看某一变量的值

image-20210409163133990

输入所要查看的变量:

image-20210409163148934

变量的值将会显示在面板上:

image-20210409163156604

2. 条件断点

  • 条件断点简介

    • 当条件满足时此断点才会生效
  • 使用步骤

    image-20210409163227275

    让程序继续运行,直至条件满足才进入断点:

    image-20210409163235714

3. 多线程调试

  • 概念

    • 断点右键

      image-20210409163247795
    • 如果为ALL的话,则所有线程都会显示在面板上,同时控制所有线程,不利于观察一个线程的执行过程

    • 如果为Thread的话,只会显示一个线程的断点调试过程

      • 所有的线程都会执行到断点处停止,只不过是只能控制其中一个线程,想要控制其他线程必须切换线程
  • 使用步骤

    image-20210409163316335

    在面板可以切换要显示的线程以及显示各线程的状态:

    image-20210409163338277

4. 强制方法返回

  • 概念

    • 当方法执行到一半时(比如出现了异常),不想继续执行此方法(此方法中剩余的代码都不执行),直接退回至调用处的下一行
  • 使用步骤

    image-20210409163959362

五、断点分类

1. 行断点

  • 上述讲述的就是行断点,断点打在方法体内,而不是方法的声明处

2. 详细断点(源断点)

  • 使用 shift + 鼠标左键,断点打在方法体内,而不是方法的声明处

    image-20210409164444655

3. 方法断点

3.1 作用一

  • 会自动的在进入方法或者离开方法时设置断点(不可见的两个断点),可以直接从方法的第一行执行到方法的最后一行,方便观察方法体内的参数、变量的初始值和最终值,而不关心变化过程

  • 在方法的声明处打断点

    image-20210409164255167
  • 进入Breakpoints中,设置断点在进入方法时还是离开方法时

    image-20210409202213960

3.2 作用二

  • 自动的跳转到方法的实现类

    • 为接口中的方法添加方法断点

      image-20210409164534848
    • 没有在实现类中添加任何断点

      image-20210409164552718
    • 方法的调用处也没有添加任何断点

      image-20210409164759958
    • 以Debug方式启动程序

      image-20210409164713713
    • 使用场景:接口的实现类有很多个,不知道是执行哪一个实现类的方法时,可以在接口的方法打一个方法断点,会自动的跳转到对应的实现类的方法

4. 异常断点

  • 无需显示设置异常断点的位置,程序会自动的在产生指定异常的位置停止下来

  • 使用步骤

    • 首先进入断点的管理面板(BreakPoints),添加异常断点

      image-20210409165046836 image-20210409165107786 image-20210409165133780
    • 以Debug方式启动程序,会自动的在产生异常的位置停顿

      image-20210409164918575

5. 字段断点

  • 监控某一字段(属性)在整个程序中执行的流程

    • 会自动的在此属性值被读取或者被修改的位置停顿下来,每有一次读取或值变化就会停顿一次
  • 在字段所在的代码行添加字段断点

    image-20210409165228068
  • 进入Breakpoints中,设置程序停顿的条件

    image-20210409201638723
  • 以Debug方式启动程序

    image-20210409165350901 image-20210409165450498

六、JDK1.8 Stream调试

image-20210409165554521 image-20210409165645915

猜你喜欢

转载自blog.csdn.net/weixin_46644403/article/details/121783650