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

[Java] idea的调试介绍

1. 什么是调试?

调试就是帮助我们去寻找代码中的bug,优化代码的过程。调试对于程序员来说非常重要,能帮助我们更容易去找到代码中的错误,去修复。

2. idea集成开发环境的调试

下面我就介绍下idea集成开发环境下的调试,我以下面代码举例说明:

public class Test1 {public static int add(int x,int y) {int z = x + y;return z;}public static void main(String[] args) {int a = 10;System.out.println(a);int b = add(10,20);System.out.println(b);}
}

2.1 打断点

首先我们需要打断点,如下图:

鼠标移动到我们要开始运行的代码位置,也就是你想要开始调试的那行代码的左边区域,鼠标左键点击,即可打上红色断点。当我们开始调试后,程序运行到打断点的那行,断点那行还未执行。

2.2 启动调试

接下来就该启动调试,如下图:

2.3 调试界面

启动调试后,会显示下面界面:

下面我就介绍下每个按键的功能: 

2.4 调试区域

区域1就会显示下面的区域3和4,这是调试过程中显示调试过程的区域,

区域3是显示调试的类还有方法以及调试到第几行,相当于一个栈区,先调用的方法在栈底。

区域4是显示在调试过程中调试到对应方法里面定义的一些变量的值。不同方法的变量不会同时显示,调用那个方法,显示那个方法中的变量。

这块区域右侧上面的框也可以对代码中的变量进行运算。 

区域2是控制台界面,这里会显示程序在调试过程中打印在控制台上的东西:

2.5 逐过程

 

上图按键是逐过程调试,就是每一点击一下,就运行main方法里的一条语句,如果遇到调用其他方法的话,不会跳转到方法内部,一步运行完方法,接着往下运行,直到main方法运行完,程序结束。 

2.6 逐语句

上面按键是逐语句调试,它也是一步一步的调试,但是区别于逐过程,它会在main方法调试中,遇到调用的方法会进入方法内部进行逐语句调试,调试完再回到main方法中继续调试,但它不会进入Java自带的方法中去。

2.7 强制步入功能

 

 

上面按钮跟逐语句调试差不多,但是强制步入调试可以进入到Java自带的方法的内部去进行调试。 

2.8 跳出功能

 上面按钮是跳出方法的功能,当你进入main方法调用的方法里面后,调试一半后,不想再调试该方法了,就点击这个按钮,直接执行完剩下的语句,回到调用该方法的那行代码位置,此时该方法已经被执行完。

2.9 运行到光标所在位置

当你启动调试后,将光标移动到想要调试的行,点击此按键,就会调试到光标所在的那一行,但这行还未被执行。

2.10 重新调试

该按钮是将正在调试的程序,从断点处重新调试 

2.11 跳到下一个断点位置

假设你打了好几个断点,点击这个按钮可以从当前断点跳到下一个断点位置。 

2.12 暂停调试

这个按钮是暂停调试,点击后直接停止调试 

2.13 显示所有断点

这个按钮可以对断点进行调整,点击后会显示下面图片的内容:

 

 这里点击1的加号可以增加断点,2的减号可以删除断点。

2.14 屏蔽断点

这个按钮可以隐藏所有的断点,点击一下,所有断点隐藏,再点击一下,所有断点显示。

 2.15 条件断点

假设方法里面有一个循环,我们总不能一次一次的点击调试,这样效率太低了。我们可以设置条件断点,在循环内部语句中找一行打上断点,右击断点设置条件,确定后开始调试就会调试到符合条件的那层代码。

条件断点可以提高我们调试到效率。 

相关文章:

  • P2670 [NOIP 2015 普及组] 扫雷游戏
  • 软件设计师考试三大核心算法考点深度解析(红黑树 / 拓扑排序 / KMP 算法)真题考点分析——求三连
  • centos7配置静态ip 网关 DNS
  • C++中的宏
  • 解码数据语言:如何优雅的进行数仓字典建设?
  • Web开发-Python应用Flask框架Jinja模版绑定路由参数传递页面解析SSTI注入
  • 协程+Flow:现代异步编程范式,替代RxJava的完整实践指南
  • PH热榜 | 2025-05-20
  • springboot框架 集成海康ISUP-SDK 并实现 协议透传给设备下发指令!
  • 武汉科技大学人工智能与演化计算实验室许志伟课题组参加第八届智能优化与调度学术会议
  • 【QT】QTableWidget获取width为100,与真实值不符问题解决
  • BUUCTF——Kookie
  • C语言学习之内存函数
  • Python打卡训练营day27-函数-装饰器
  • 深入解析MATLAB codegen生成MEX文件的原理与优势
  • MySQL高频面试八连问(附场景化解析)
  • 【MySQL】第六弹——表的CRUD进阶(四)聚合查询(下)
  • 【C# 自动化测试】借助js获取浏览器滚动条高度
  • 2025ICPC武汉邀请赛-F
  • 【c# 类型转换中 as 和()】
  • 人民日报:莫让“假自杀”淹没“真求助”
  • 广东茂名信宜出现龙卷,一家具厂铁皮房受损
  • 上海普陀:原则同意将工业河更名为同济湾河
  • 山西资深公益人士孙超因突发急病离世,终年37岁
  • 上海国际电影节将于6月3日公布排片表,6月5日中午开票
  • 讲述“外国货币上的中国故事”,《世界钱币上的中国印记》主题书刊出版发布