IDE篇——Eclipse的Debug功能

当程序运行结果不正确且难以定位错误时,Eclipse的Debug工具成为关键。本文详细介绍了如何设置断点,使用Debug模式运行,包括step over、step into、step return和drop to frame等操作的解释及应用场景。同时,通过测试代码展示了不同类型数据在System.out.println()中的不同表现,以及解决step into无效问题的方法,强调了正确配置JRE的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Eclipse的Debug功能

运行程序,没有报错(出现异常),但结果不正确,这种时候,错误很难定位,就需要借助Debug工具,(或者系统比较大的时候,某个地方出错,很难定位)

如何调试程序:
① 方式一:System.out.println(),边看边输出,只适合程序不大的时候
② 方式二:Eclipse - Debug调试功能


一、如何调试

  1. 设置断点
    注意:可以设置多个断点
  2. Debug As Java Application
    注意:在执行到断点之前,不会自动启动Debug视图,相当于依然在执行Run As的功能

在这里插入图片描述

  1. 常用操作
操作作用
step into 跳入(f5)进入当前行所调用的方法中
step over 跳过(f6)执行完当前行的语句,进入下一行
step return 跳回(f7)执行完当前行所在的方法,进入下一行
drop to frame回到当前行所在方法的第一行
resume 恢复执行完当前行所在断点的所有代码,进入下一个断点,如果没有就结束
Terminate 终止停止 JVM, 后面的程序不会再执行

详细解释:

  • step over:执行完当前这一行的语句,进入到下一行语句(还没执行下一行)

  • step into:进入当前行所调用的方法内部
    【如果一行代码是调用方法,那么step into是进入方法内部(可以一行一行执行方法内的代码),step over则是直接执行完该行代码(即:方法整个执行完并且得到相应返回值)】

  • step return:在step into进入某方法内部时,已经检查的差不多了(通常不用整个方法都检测是否有错),想要返回到原先程序流程中,就用step return;

  • drop to frame:在step into进入某方法内部时,通过step over一步一步执行,可能某一步没看清楚,想再看一遍,就使用drop to frame回到该方法起始位置,可以重新再来推进;

  • resume:推进到下一个断点处,如果没有断点了就执行到程序结束;
    【程序执行过程中的输入操作,也会阻塞(要等待用户输入),并不是点了resume就会到达下一个断点】

  • terminate:直接终止程序,不看了;


二、测试代码

测试代码 1:

public class DebugTest {
	public static void main(String[] args) {
		int i = 10;
		int j = 20;
		System.out.println("i = " + i + ", j = " + j);
		
		DebugTest test = new DebugTest();
		int max = test.getMax(i, j);
		
		System.out.println("max = " + max);
	}

	private int getMax(int k, int m) {
		int max = 0;
		if (k < m) {
			max = k;
		} else {
			max = m;
		}
		return max;
	}
}

在这里插入图片描述


测试代码 2:

public class DebugTest1 {
	
	public static void main(String[] args) {
		int[] arr = new int[] {1,2,3,4,5};
		System.out.println(arr); //输出的是地址值
		
		char[] arr1 = new char[] {'a','b','c'};
		System.out.println(arr1); //输出的是字符串"abc"
	}
}
  • 之前测试的时候,发现同为基本数据类型,int[] arr 等执行System.out.println(arr); 输出的就是地址值,但是 char[] arr1 输出的是字符串"abc"
  • 当时就已经知道调用的是重载方法,现在则可以通过debug再次验证:通过step into发现,进入的是不同的方法,int[] arr 执行 System.out.println(arr); 进入的是 println(Object x) ,而 char[] arr1 进入的是 println(char x[])

三、点击step into时可能存在的问题

  • 点击 step into 时,本应跳转进入当前行代码调用的方法的方法体内,但是有的人点击 step into 后,执行的操作和 step over 一样,即直接执行到下一行代码了
  • 究其原因,十有八九是因为Debug Configurations中的JRE使用的是独立装的jre,而不是jdk中的

右键 —> Debug As —> Debug Configurations
在这里插入图片描述
选择JRE(如果有问题,很可能就是这里的jre选择错误) —> Installed JREs
在这里插入图片描述
接下来就是 Remove 掉原来的jre,然后 Add 中添加 Standard VM,找到jdk的目录并确认,并把对勾打上,就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值