单线程 Debug
01_Debug
-
什么是Debug
- Debug 程序调试
- 开发:调试 = 1 : 1.5
-
Debug能帮我们做什么
- 追踪代码运行流程
- 异常的定位与调试
- 线上问题追踪
-
Debug的意义
- 熟悉执行流程
- 方便理解复杂程序逻辑
- 定位问题 提高解决问题的能力
02_Idea中的Debug
- 设置断点(F9)
- 程序调试(按钮x8)
按钮 | 快捷方式 | 说明 |
---|---|---|
Alt+F10 | 如果光标在其他行或者其他页面,点击按钮调到当前代码执行的行。 | |
F8 | 步过,一步一步往下走,如果这一行上有方法不会进入方法。 | |
F7 | 步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方库方法。 | |
Alt + Shift + F7 | 强制步入,能进入任何方法,查看底层源码的时候可以用此方法进入官方类库。 | |
Shift + F8 | 不出,从步入的方法内退回到方法调用处,此时方法已经执行完毕,只是还没有完成赋值。 | |
回退断点。 | ||
Alt + F9 | 运行到光标处,可以将光标定位到需要查看的一行,然后使用这一功能,代码会运行至光标行,而不需要打断点。 | |
Alt + F8 | 计算表达式。 |
- 03_Debug 的使用
- 设置断点
- 进入Debug
代码实例
- 步
- 步过 跳过本行中的方法单行执行
- 步入 进入本行中的方法,但不进入官方库方法
- 强制步入 进入方法,包括官方类库
- 步出 在
步入
一个方法后,不执行结束则不会退出该方法,使用步出
则可以直接结束该方法,调到该方法的调用处
public void a(){
>System.out.println("---程序执行开始");
>int c = add(1,2);
System.out.println("---程序执行结束");
}
public int add(int a,int b){
return a+b;
}
步过:在 2 号断点,步过 不会进入add方法而直接获得 add方法的返回值;
步入:在 2 号断点,步入 会进入 add 方法,并一步一步执行,但是在 1 号断点,步入 不会进入 print 方法;
强制步入:在 1 号断点,强制步入会进入 print 方法;
步出:在 进入 add 方法后,如果不想看后面的代码,可以使用步出,直接回到 a 方法;
- 回退 & 运行到光标
- 回退:当
步入
一个方法体之后,使用回退可以回到该方法的调用处,进而可以重新执行步入等调试(而不用重启Debug); - 运行到光标:不用频繁设置断点,光标指到哪里,就运行到哪里;
- 回退:当
- 计算表达式
- 查看变量的几种方式
- 1、 Debug 的 Variables
- 2、 光标放在方法的 形参上面,然后点击 +号
- 3、 使用计算表达式功能,输入
user
,就可以显示用户变量,并且可以修改用户变量值;- 修改方法:直接输入
user.setUserTyp=("员工");
点击回车
public static void main(String[] args){
User user = new User("张三","123456","超级管理员");
login(user);
}
public static void login(User user){
switch(user.userType){
case "超级管理员":
sout("是超级管理员");
}
}
//User 类
@Data
public class User(){
String username;
String password;
String userType;
}
- 条件断点
- 使用条件:循环300次的断点,需要连点 300 次 步过;
- 使用方式:在
断点
处 右击,在Condititon
中输入i == 300
;