【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.rhkb.cn/news/405127.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[数据集][目标检测]锤子检测数据集VOC+YOLO格式1510张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1510 标注数量(xml文件个数):1510 标注数量(txt文件个数):1510 标注…

美团外卖新版 web mtgsig 1.2 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、 敏感网址、数据接口等均已做脱敏处理,严禁用于商业 用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像或私信联…

Pcie学习笔记(24)

Ordering and Receive Buffer Flow Control 流量控制(FC)用于防止接收端缓冲区溢出,并使其符合定义的排序规则。请注意,请求者使用流量控制机制来跟踪代理中可用的队列/缓冲区空间,如图2-48所示。也就是说,流控制是点对点的(跨一…

集团数字化转型方案(六)

集团数字化转型方案旨在通过引入前沿技术,如人工智能(AI)、大数据分析、云计算和物联网(IoT),全面提升业务运营效率和市场竞争力。该方案首先实现业务流程的自动化,减少人工干预,通过…

学习C语言 第十八天

第一项 C 强制类型转换 强制类型转换是把变量从一种类型转换为另一种数据类型。可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型 (type_name) expression 一个整数变量除以另一个整数变量&#xff0c;得到一个浮点数&#xff1a; eg: #include <st…

AI在线免费数学工具:Qwen2-Math

1、Qwen2-Math https://huggingface.co/spaces/Qwen/Qwen2-Math-Demo

Python爬虫——简单网页抓取(实战案例)小白篇

Python 爬虫是一种强大的工具&#xff0c;用于从网页中提取数据。这里&#xff0c;我将通过一个简单的实战案例来展示如何使用 Python 和一些流行的库&#xff08;如 requests 和 BeautifulSoup&#xff09;来抓取网页数据。 实战案例&#xff1a;抓取一个新闻网站的头条新闻标…

【Qt】 常用控件QLCDNumber

常用控件QLCDNumber QLCDNumber是一个专门用来显示数字的控件&#xff0c;类似于“老式计算机”的效果。 QLCDNumber的属性 属性说明 intValue QLCDNumber 显⽰的数字值(int). value QLCDNumber 显⽰的数字值(double). 和 intValue 是联动的. 例如给 value 设为 1.5, i…

Docker 存储空间不足无法导入加载镜像

问题&#xff1a;在载入镜像时&#xff0c;发现docker没有空间了 解决办法&#xff1a; 更改docker的存储路径 1.添加新的硬盘 docker info #查看docker的存储位置 df -Th #查看占用以及挂载情况 发现没有可用的剩余空间&#xff0c;我们可以添加一个新的硬盘 在linu…

Java之HashMap的底层实现

Java之HashMap的底层实现 摘要HashMap的底层原理哈希值转换为数组下标节点初始化put(Object key, Object value)重写toString()get(Object key)增加泛化remove(K key) 摘要 本博客主要讲述了Java的HashMap的底层实现 HashMap的底层原理 底层原理&#xff1a;数组链表 过程…

Golang | Leetcode Golang题解之第352题将数据流变为多个不相交区间

题目&#xff1a; 题解&#xff1a; type SummaryRanges struct {*redblacktree.Tree }func Constructor() SummaryRanges {return SummaryRanges{redblacktree.NewWithIntComparator()} }func (ranges *SummaryRanges) AddNum(val int) {// 找到 l0 最大的且满足 l0 < val…

Elasticsearch 使用误区之四——不合理的使用 track_total_hits

0、企业级实战问题 在使用 Elasticsearch 进行搜索时&#xff0c;我们常常关心匹配查询的文档总数而将 track_total_hits 设置为 true&#xff0c;如下截图所示&#xff0c;在数据量非常大的情况下这种检索导致的问题是&#xff1a;查询特别慢&#xff0c;聚合会更慢&#xff0…

机器学习:逻辑回归实现下采样和过采样

1、概述 逻辑回归本身是一种分类算法&#xff0c;它并不涉及下采样或过采样操作。然而&#xff0c;在处理不平衡数据集时&#xff0c;这些技术经常被用来改善模型的性能。下采样和过采样是两种常用的处理不平衡数据集的方法。 2、下采样 1、概念 下采样是通过减少数量较多的类…

MaxKB(二):Ubuntu24.04搭建maxkb开发环境

接上文&#xff1a;windows10搭建maxkb开发环境&#xff08;劝退指南&#xff09; 上文在windows10环境搭建maxkb开发环境遇到各种坑&#xff0c;后面就转战ubuntu平台&#xff0c;果然比较顺利的完成开发环境搭建。当然遇到相关的问题还是可以参考上文《windows10搭建maxkb开发…

Stable Diffusion赋能“黑神话”——助力悟空走进AI奇幻世界

《黑神话&#xff1a;悟空》是由游戏科学公司制作的以中国神话为背景的动作角色扮演游戏&#xff0c;将于2024年8月20日发售。玩家将扮演一位“天命人”&#xff0c;为了探寻昔日传说的真相&#xff0c;踏上一条充满危险与惊奇的西游之路。 同时&#xff0c;我们还可以借助AI绘…

向量数据库Faiss的搭建与使用

​ ​ 您好&#xff0c;我是程序员小羊&#xff01; 前言 向量数据库在处理大量高维数据时非常有用&#xff0c;尤其在机器学习、推荐系统、图像检索和自然语言处理等领域。Faiss是 Facebook AI Research (FAIR) 开发的一款高效的开源向量数据库&#xff0c;专注于大规模、高维…

SpringBoot整合Sharding-JDBC分库分表

SpringBoot整合Sharding-JDBC分库分表 本文介绍SpringBoot使用当当Sharding-JDBC进行分库分表。 1、有关Sharding-JDBC 有关Sharding-JDBC介绍这里就不在多说&#xff0c;之前Sharding-JDBC是当当网自研的关系型数据库的水平扩展框架&#xff0c;现 在已经捐献给Apache&…

macOS安装搭建python环境

安装Homebrew apt-get是一个常见于Debian和Ubuntu等基于Linux的操作系统中的包管理工具&#xff0c;用于安装、更新和移除软件包。然而&#xff0c;macOS使用的是Homebrew或者MacPorts等其他的包管理工具&#xff0c;并不使用apt-get。 如果你想在macOS上使用类似apt-get的功…

【大模型理论篇】大模型时代下Bert去哪啦?

这个标题是最近看到的一篇文章《What happened to BERT & T5? On Transformer Encoders, PrefixLM and Denoising Objectives》有感而发&#xff0c;也感觉很有意思。在几年前&#xff0c;在项目中还经常会用到Bert。本文主要回顾一下Bert的原理、Bert的继续训练和使用&am…

JavaScript高级程序设计 -- -- 观后记录

一、什么是 JavaScript 1、JavaScript 实现 完整的 JavaScript 实现包含以下几个部分&#xff1a; -- --  核心&#xff08;ECMAScript&#xff09;  文档对象模型&#xff08;DOM&#xff09;  浏览器对象模型&#xff08;BOM&#xff09; 2、DOM 文档对象模型&#…