当前位置: 首页 > news >正文

【java基础】IDEA 的断点调试(Debug)

目录

1.为什么需要 Debug

2.Debug的步骤

2.1添加断点

2.2单步调试工具介绍

 2.2.1 Step Over

 2.2.2 Step Into

2.2.3 Force Step Into

2.2.4 Step Out

2.2.5 Run To Cursor

2.2.6 Show Execution Poiint

2.2.7 Resume Program

3.多种 Debug 情况介绍

3.1行断点

3.2方法断点

3.2.1样例一

3.2.2样例二


1.为什么需要 Debug

编好的程序在执行过程中如果出现错误,该如何查找并定位错误呢?简单的代码可以直接看出来,但如果代码比较复杂,就需要借助程序调试来查找错误了。

2.Debug的步骤

Debug(调试)程序步骤如下

  1. 添加断点
  2. 启动调试
  3. 单步执行
  4. 观察变量和执行流程,找到并解决问题

2.1添加断点

源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点。

2.2单步调试工具介绍

 2.2.1 Step Over

每点一次就执行一步(F8)

 2.2.2 Step Into

进入到方法内部(F7)

2.2.3 Force Step Into

进入源码(Alt + Shift + F8)

2.2.4 Step Out

跳出当前方法(Shift + F8)

2.2.5 Run To Cursor

运行至光标所在行(Alt + F9)

2.2.6 Show Execution Poiint

显示断点所在位置(Alt + F10)

2.2.7 Resume Program

运行至下一断点 (F9)

在 Debug 过程当中,可以动态的下断点

3.多种 Debug 情况介绍

3.1行断点

示例代码:

/*** 行断点*/
public class Debug01 {public static void main(String[] args) {int m = 10;int n = 20;System.out.println("交换前:m = " + m + ", n = " + n);swap(m, n);System.out.println("交换后:m = " + m + ", n = " + n);}public static void swap(int m, int n) {int temp = m;m = n;n = temp;}
}

运行结果如下:

运行结果

 我们发现 m 和 n 的值实际上并没有交换,为了探究其原因,我们可以使用行断点进行调试

点击 Debug 后,程序会运行到第一个断点的位置上

此后,每次点击 Step Over 都会向下执行一步

调试到此处,我们选择 Step Into 进入到方法内部,若中途想要跳出当前方法,可以点击 Step Out;若仍点击 Step Over,则会将 swap 方法一次性执行完毕并执行到 main 方法的下一条语句

最后我们可以看到在 swap 方法中 m=20, n=10

但是在 main 方法中仍然 m=10, n=20

如果运行到第一个断点以后,想要直接运行到下一个断点,我们可以点击 Resume Program

3.2方法断点

  • 断点设置在方法的签名上,默认当进入时,断点可以被唤醒
  • 也可以设置在方法退出时,断点也被唤醒

示例代码:

/*** 方法断点*/
public class Debug02 {public static void main(String[] args) {//1.Son instance = new Son();instance.test();//2.类的多态性Father instance1 = new Son();//3.接口的多态性Consumer con = new ConsumerImpl();con.accept("example");//4.HashMap map = new HashMap();map.put("Tom", 12);map.put("Jerry", 11);map.put("Tony", 20);}
}class Father{public void test() {System.out.println("Father : test1");System.out.println("Father : test2");}
}class Son extends Father{@Overridepublic void test() {System.out.println("Son : test1");System.out.println("Son : test2");}
}interface Consumer{void accept(String str);
}class ConsumerImpl implements Consumer{@Overridepublic void accept(String str) {System.out.println("ConsumerImpl: " + str);}
}

3.2.1样例一

点击 Debug 以后会停留在断点方法的第一行代码的位置

右键断点我们可以勾选此处,此后方法退出时断点也被唤醒

3.2.2样例二

我们在父类打下断点,子类不打断点

运行时,子类明明没有断点,但是也停留了,这叫做方法的重写,子类重写父类的方法,即覆盖

http://www.lryc.cn/news/428758.html

相关文章:

  • MPLS相关实验
  • 从零开始学习SLAM(五):极几何与极约束
  • Freertos学习笔记
  • 线程(Thread)的使用方法和锁(同步代码块,lock锁)的问题
  • Java 反射机制
  • 详解MBR分区结构以及GPT分区结构
  • jvm 调优篇
  • Spring AOP应用指南:概念、通知与表达式分析
  • 汽车的UDS诊断01
  • MySQL——单表查询(二)按条件查询(6)DISTINCT 关键字作用于多个字段
  • python从入门到精通:数据容器
  • Java 中都有哪些引用类型?
  • 使用 Dify 和 AI 大模型理解视频内容:Qwen 2 VL 72B
  • mybatisplus 通过xml 定义接口
  • 上周稼先社区的活动
  • day_45
  • SQL 时间盲注 (injection 第十六关)
  • nginx核心配置示例
  • 【面向对象】04面向对象三大特征之——继承
  • 计算机毕业设计Python+Flask弹幕情感分析 B站视频数据可视化 B站爬虫 机器学习 深度学习 人工智能 NLP文本分类 数据可视化 大数据毕业设计
  • 用基础项目来理解spring的作用
  • Json-复杂泛型解析工具类
  • CLIP-VIT-L + Qwen 多模态学习笔记 -3
  • 如何将网站地图Sitemap提交至百度、谷歌及Bing搜索引擎
  • DC-DC FB分压电阻计算 (MP1584 SY8205为例)
  • ESLint详解及在WebStorm中的应用
  • 数据库系统 第20节 云数据库
  • 用excel内容批量建立文件夹
  • SIRA-PCR: Sim-to-Real Adaptation for 3D Point Cloud Registration 论文解读
  • IDEA安装和使用(配图)