目录

前置说明:

IDEA 中文插件

Debug入门

开启debug

常规调试

快捷键说明

表达式计算

表达式变量查看

表达式变量变更

断点进入条件

特定值进入

异常出现进入

多线程断点

查看所有线程

显示线程详细信息

案例


Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码

前置说明:

博主使用的IDEA 版本:2022.3.3

各个IDEA版本可能在文章中截图显示UI有略微差异

IDEA 中文插件

idea java debug lua脚本 idea debug教程_计算表达式

 

Debug入门

开启debug

  • 在设置里勾选Show debug window on breakpoint,则请求进入到断点后自动激活Debug窗口
  • idea java debug lua脚本 idea debug教程_ide_02

  • 如果你的IDEA底部没有显示工具栏或状态栏,可以在View里打开,显示出工具栏会方便我们使用。
  • idea java debug lua脚本 idea debug教程_ide_03

  • 在菜单栏Run里有调试对应的功能,同时可以查看对应的快捷键
  • idea java debug lua脚本 idea debug教程_计算表达式_04

  •  

常规调试

  • 以Debug模式启动服务,左边的一个按钮则是以Run模式启动。在开发中,我一般会直接启动Debug模式,方便随时调试代码。
  • 断点:在左边行号栏单击左键,或者快捷键Ctrl+F8 打上/取消断点,断点行的颜色可自己去设置。
  • Debug窗口:访问请求到达第一个断点后,会自动激活Debug窗口。如果没有自动激活,可以去设置里设置。
  • idea java debug lua脚本 idea debug教程_计算表达式_05


  • 调试按钮:一共有4个按钮,调试的主要功能就对应着这几个按钮,鼠标悬停在按钮上可以查看对应的快捷键。在菜单栏Run里可以找到同样的对应的功能。
  • idea java debug lua脚本 idea debug教程_计算表达式_06


  • 服务按钮:可以在这里关闭/启动服务,设置断点等。

  • 方法调用栈:这里显示了该线程调试所经过的所有方法,点击右上角过滤按钮,就不会显示其它类库的方法了,否则这里会有一大堆的方法。
  • idea java debug lua脚本 idea debug教程_快捷键_07


  • Variables:在变量区可以查看当前断点之前的当前方法内的变量。
  • idea java debug lua脚本 idea debug教程_计算表达式_08


  • Watches:查看变量,可以将Variables区中的变量拖到Watches中查看
  • idea java debug lua脚本 idea debug教程_快捷键_09


快捷键说明

idea java debug lua脚本 idea debug教程_java_10


  • Step Over (F8):步过,一行一行地往下走,如果这一行上有方法不会进入方法。

  • Step Into (F7):步入,如果当前行有方法,可以进入方法内部

  • Step Out (Shift + F8):步出,从步入的方法内退出到方法调用处

  • Run to Cursor (Alt + F9):运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。

表达式计算

表达式变量查看

idea java debug lua脚本 idea debug教程_ide_11


可以使用这个操作在调试过程中计算某个表达式的值,而不用再去打印信息。你可以选中某个表达式再Alt + F8,弹出计算表达式的窗口,如下,回车或点击Evaluate计算表达式的值。

这个表达式不仅可以是一般变量或参数,也可以是方法,当你的一行代码中调用了几个方法时,就可以通过这种方式查看查看某个方法的返回值

idea java debug lua脚本 idea debug教程_计算表达式_12


表达式变量变更

设置变量,在计算表达式的框里,可以改变变量的值,这样有时候就能很方便我们去调试各种值的情况

idea java debug lua脚本 idea debug教程_intellij-idea_13


断点进入条件

特定值进入

通过设置断点条件,在满足条件时,才停在断点处,否则直接运行。

通常,当我们在遍历一个比较大的集合或数组时,在循环内设置了一个断点,难道我们要一个一个去看变量的值?那肯定很累,说不定你还错过这个值得重新来一次

idea java debug lua脚本 idea debug教程_快捷键_14


异常出现进入

idea java debug lua脚本 idea debug教程_计算表达式_15


多线程断点

查看所有线程

idea java debug lua脚本 idea debug教程_快捷键_16


显示线程详细信息

右击线程,点击线程试图

idea java debug lua脚本 idea debug教程_ide_17


案例

线程DEMO

public class MMM implements Runnable{

    public static void main(String[] args){

        Thread t1=new Thread(new MMM());

        t1.start();

        Thread t2=new Thread(new MMM());

        t2.start();

        Thread t3=new Thread(new MMM());

        t3.start();

        System.out.println("1");

    }

    @Override

    public void run() {

        System.out.println("1");

    }

}

开启断点

idea java debug lua脚本 idea debug教程_计算表达式_18


设置线程断点模式

idea java debug lua脚本 idea debug教程_intellij-idea_19


按需调试指定线程

想调试哪个选中哪个继续执行即可

idea java debug lua脚本 idea debug教程_ide_20