前言
在下认为,IDEA的debug功能非常强大。并且易于上手,快捷键操作方便。下面介绍一些常用的基本debug方法
IDEA版本
在下使用的IDEA版本信息如下:
IntelliJ IDEA 2018.3.6 (Ultimate Edition)
不同的IDEA版本可能会造成界面部分地方不同。但是功能是不会变化的。
基本debug流程
-
打断点
在IDEA中为某一行打上断点有两种方法可以做到。在下常用的是鼠标点击打上断点
- 在代码行号的右边点击鼠标左键,这样就能直接打上断点
- 使用快捷键Ctrl+F8可以直接在光标所在行打上断点。打上断点之后再次点击可以取消打上的断点
- 在代码行号的右边点击鼠标左键,这样就能直接打上断点
-
启动程序开始debug。启动debug的常用方法有2个
- 点击debug图标
开始启动debug程序。debug小图标常见的位置有3处。具体操作在下图中给出
- 使用快捷键shift+F9可直接启动debug程序
- 点击debug图标
-
控制程序继续执行的操作有两种方式
- 点击debug窗口的各种图标进行操作。所有图标如下所示
- 整个控制图标栏
step over : 执行一行程序,不进入函数
step into :执行一行程序,遇到可进入的函数则进入函数,不进入库函数
force step into:执行一行程序,遇到可进入的函数则进入函数,进入库函数
step out:执行完当前函数,然后跳转到当前函数的调用函数
drop frame:直接从当前函数返回,并且跳转到上级函数将要调用此函数的地方。并且保持此函数中已进行的内存修改(这个功能很少用到)
run to cursor:执行到光标所指的那行程序
- 整个控制图标栏
- 使用快捷键执行程序.由于所有图标的快捷键都可以将通过鼠标悬停的方式显示,此处不再赘述。
下面介绍部分使用小技巧
- 鼠标悬停于按键一段时间后显示快捷键以及功能简单描述:
- 按键功能完整描述在界面左下角处,如图所示:
- 点击debug窗口的各种图标进行操作。所有图标如下所示
- 查看内存数据
-
查看一个特定对象或者一个内置数据类型可以在debugger窗口的variables一栏中寻找。variables会显示程序执行到现在,栈帧中存在的所有变量以及其值。内置类型会直接显示其值,对象可以展开查看内部信息。简单示例图片如下
-
如果没有看到variables一栏,是因为其没有展开,点击debugger窗口右侧的variable图标
即可打开variable一栏即可
-
variables一栏显示的是栈帧上的内存情况,在切换栈帧时,variables中可以展示不同栈帧中的局部变量。在frame一栏中点击不同的函数名即可切换栈帧。如下图所示
-
需要持续观察一个对象时可以使用watches一栏,将变量加入其中便一直能查看该变量。将变量加入有两种方法。
- 点击watches的"+"号,然后输入变量名,点击回车键加入。(在输入变量名时代码补全)
- 直接从variables一栏中拖拽变量进入watches一栏中
- 操作示例:
-
IDEA还提供了更方便的查看方法,在程序运行时,编辑器中会附加变量的信息在源代码上,以灰色的字符附加到代码的之后。
- 附加信息展示:
- 将鼠标悬停在源代码的变量上时,会弹出变量的信息,并且当变量为对象时,可以查看更加详细的信息
- 附加信息展示:
-
以上便是IDEA基本debug功能的使用方法。谢谢阅读
以下为测试中涉及的代码
import java.util.ArrayList;
import java.util.List;
public class debug_basic {
public static void main(String[] args) {
/*基本数据类型*/
int a=0;
double b;
b=3.5;
a =(int) b;
/*对象、集合*/
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(a);
f1(list);
String s = "this is a string "+list.get(2);
System.out.println("basic debug");
}
private static void f1(List<Integer> list) {
System.out.println(list.get(0));
list.set(0, 3);
System.out.println(list.get(0));
}
}