IDEA中的Debug模式的使用

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] args) {
hello();
Map<String, Object> map = new HashMap<String, Object>();

map.put("1", "1111");
System.out.println(map);
System.out.println(map);
map.containsKey("1");
}

private static void hello(){
System.out.println("hello");
}

都打上断点如下:
在这里插入图片描述
点此开始debug
在这里插入图片描述
自动跳到断点处,并且在断点之前会有数据结果显示
在这里插入图片描述
操作说明

名称 快捷键 说明
Step Over F8 进入下一步,如果当前行断点是一个方法,则不进入当前方法体内,跳到下一条执行语句
Step Into F7 进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方法,则会进入该内嵌的方法中
Force Step Into Alt + Shift + F7 强制进入某个其它类的方法、F7进不了的方法、它都能进
Step Out Shift + F8 跳出该方法,回到原来地方
Resume Program F9 跳出到下一个断点

问题:什么方法F7进入不了?
请在IDEA中查看File (menu) -> Settings -> Build, Execution, Deployment -> Debugger -> Stepping -> Do not step into the classes中的配置。如下:
在这里插入图片描述

进入hello方法中查看执行过程:F7
在这里插入图片描述
下一步:F8
在这里插入图片描述
这里如果用F7,将直接略过、并不会进入HashMap的构造方法,如果想进入其构造方法,需要使用:Alt + Shift +F7
在这里插入图片描述
跳出此方法后回到new HashMap的地方,需要再按一次:Alt + Shift +F7
在这里插入图片描述
回到主代码:
在这里插入图片描述
这里才是感兴趣的地方,但是要进入其中,需要使用Alt + Shift +F7进入该类的方法其中:
在这里插入图片描述
但是在进入putVal前会先计算hash()、也就是先进入hash()这个本类的方法,所以F7后会进入hash()。
在这里插入图片描述
在这里插入图片描述
回到put后,再按F7将进入putVal,如下:
在这里插入图片描述
resize()啊,一定要去看一下,F7:
在这里插入图片描述
这些数据一目了然、看源代码的神器!!
先退出这一系列方法到main函数:Shift + F8
在这里插入图片描述
如果我想略过其中的system.out.pringln,直接到达下一个断点,F9即可:
在这里插入图片描述
基本的使用方法如上所述。

作者

遇寻

发布于

2018-11-01

更新于

2022-01-01

许可协议

评论