您当前的位置:首页 > 计算机 > 软件应用 > 开发工具(IDE)

小白如何进行代码调试Debug(IDEA 2023版)

时间:02-21来源:作者:点击数:

前言

本篇文章主要介绍如何进行断点调试

1、开始调试

开始调试主要分为两步,第一为设置断点,第二才进行调式操作。

1、设置断点

设置断点的方法基本上大多数的IDE都一致,当我们在代码行上的数字旁鼠标左键点击一下,便设置断点成功(可设置多个断点)。断点还可以进行其余设置

在这里插入图片描述

2、Debug调试

启动调式主要有以下三种方法:

  1. 工具栏点击小甲虫样式debug按钮
  2. 鼠标右键菜单下的debug
  3. 快捷键:Alt+Shift+D(可自行更换)

方式一:

在这里插入图片描述

方式二:

在这里插入图片描述

2、调试界面解释

点击了调试按钮之后,我们 IDEA 的底部会变成以下形式。既然要开始调试,我们总得先对调试界面有一个初步的认识不是,因此在下面我对常用的部分进行解释

在这里插入图片描述

1、调试器

在此界面可查看关于调式获得到的信息,如变量、方法返回值等

2、控制台

点击控制台后可以跟我们正常运行代码一样,在控制台中输入数据和查看输出情况

3、重启

重新调试

4、停止

停止当前调试

5、Resume Program

快捷键为F8,跳到一下个断点处

6、Step Over

快捷键为F6步过,一行一行地往下走,如果这一行上有方法,直接执行完该方法的内容,不会进入方法里面。

7、Step Into

快捷键为F5步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。

8、Step Out

快捷键为F7步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。

9、Force Step Into

快捷键为Alt + Shift + F7强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。

10、Run to Cursor

Ctrl+R运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。

11、Show Execution Point

快捷键为Alt + F10。如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前Debug代码执行的行。

12、Variable窗口

如图中的红框,这里显示当前方法里的所有变量

在这里插入图片描述

简记

在这里插入图片描述

3、步过、步入和强制步入区别

这三个按钮的功能各有千秋,都具有进行到下一步的功能。当我们写的 bug 不同时,我们就得用到不同的按钮,下面我用表格列出三者的不同

  是否可跳转 是否可进入自定义方法 是否可进入类库方法
步过
步入
强制步入

4、调试案例

4.1、创建User类

public class User {
	private int id;
	private String name;

	public User() {
	}

	public User(int id, String name) {
		this.id = id;
		this.name = name;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

4.2、创建UserTest调试类

import java.util.ArrayList;
import java.util.List;

/*
* 1、静态方法不能直接调用非静态方法。
* 2、静态方法和变量可以在类被加载时就被访问,而非静态方法和变量需要在该对象创建后才能被访问。
* 3、如果想在静态方法中访问非静态方法或者变量,则需要先创建一个对象,然后在静态方法里面通过对象去访问非静态方法。
* */

public class UserTest {
	//	非静态方法,获取User列表
	public List<User> getUserList(){
		User user1 = new User(1,"张三");
		User user2 = new User(2,"李四");
		User user3 = new User(3,"王五");
		//	注意List是接口,接口不能直接实例化,需要通过它的实现类
		List<User> users= new ArrayList<>();
		users.add(user1);
		users.add(user2);
		users.add(user3);

		return users;
	}

	public void syTest(){
		System.out.println("断点回退前");
		System.out.println("回退后");
	}


	public void allTest(int[] array){
		for (int i : array) {
			if (i==1){
				System.out.println(1);
			}else if (i==2){
				System.out.println(2);
			}else if (i==3){
				System.out.println(3);
			}else if (i==4){
				System.out.println(4);
			}
			else {
				System.out.println(5);
			}
		}
	}

	// 主程序入口,静态方法
	public static void main(String[] args) {
		int[] array={1,2,3,4,5};
		UserTest userTest = new UserTest();
		// 在静态方法里面调用非静态方法,需要通过对象去调用。
		userTest.allTest(array);
		List<User> users= userTest.getUserList();

		// 带条件的断点
		for (User user : users) {
			System.out.println(user.getId());
		}

		// 断点回退
		userTest.syTest();

		// 执行中断 force return
		userTest.allTest(array);

	}
}

4.3、具体调试

1、常用调试

在userTest.allTest(array) 打一个断点,点击Debug

在这里插入图片描述

2、带条件的断点

在System.out.println(user.getId());打一个断点,鼠标右键断点,编写调试条件

在这里插入图片描述

3、断点回退(只能用在方法里面)

在userTest.syTest() ,打一个断点,Step Into进入方法后,点击Step Over,我们可以看到,左下角框有Reset Frame(断点回退),点一下它,就回到之前执行断点之前的位置,再次重复该操作,查看控制台输出内容。

在这里插入图片描述
在这里插入图片描述

4、执行中断(Force Return)

在userTest.allTest(array),打一个断点,Step Into进入方法后,按Step Over,会跟着内容逐个输出1,2,3,4,5。假设在开发环境中,输出3之后就到了数据库的更新操作,但我们并不想去更新数据库的内容,即到输出3的时候就终止执行。即来到3的时候,在Threads & Variable 右键,选择Force Return,就不会继续执行下去了。

在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门