工作中使用IDEA进行调试的技巧
此IDEA调试是在IDEA社区版2022版本
行断点
设置断点
当前行的左侧,鼠标左键点击,出现红色的圆点,即断点,这是属于行断点
debug运行模式
在当前类,鼠标点击右键,出现菜单,然后选择Debug 'StringDemo.main()
或者点击工具栏,debug按钮
然后出现debug
面板
常见操作
跳过当前所有断点
查看断点面板
断点挂起
打开断点配置面板,去除Suspend
然后原来断点从红色变成黄色,当前行断点是不生效的
debug模式下运行程序,会跳过断点处
方法断点
在方法这里的方法名左侧,使用鼠标左键点击,就会出现一个菱形断点。方法断点设置成功之后,程序运行的时候,会自动停在方法的第一行
接口方法设置断点
接口方法设置断点,debug模式下,执行接口的方法断点的时候,会自动跳到接口的实现类对应的方法中
异常断点
打开断点配置面板
添加需要鉴定的异常断点
添加需要监控的异常,这里可以进行输入异常名称进行搜索,也可以输入自定义的异常名称
添加成功之后,程序在运行中出现了异常断点中指定的异常,就会停止继续执行。这里我监听的是空指针异常,程序在运行过程中遇到空指针异常,就会停止继续执行。
debug调试
字段断点
package com.demo;
public class StringDemo {
public static void printPerson(){
Person person = new Person("张三",12);
System.out.println(person);
}
public static void main(String[] args) {
printPerson();
}
}
package com.demo;
public class Person {
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
设置字段断点
debug调试
debug模式运行StringDemo,程序会跳到字段值发生改变的地方
带条件的断点
然后点击Done
按钮,条件表达式设置成功。debug运行之后,会在满足条件的断点处停顿,但是不影响程序的执行结果
运行结束,输出结果
表达式解析
断点触发打印信息
鼠标右键断点的地方
然后点击More(Ctrl+Shift+F8)
,打开以下界面
然后debug
模式运行后,程序运行到指定断点,控制台就会打印信息
输出断点所在行的信息
打印堆栈信息
鼠标右键断点的地方
然后重新debug
模式,控制台打印信息
工具栏
项目启动时,把参数传递进来
public class RuntimeParamTest {
// 多个测试环境,很多配置用了一个魔术值
// java -jar springboot-demo.jar -D
// jenkins启动的时候,通过传递参数替换魔术值,从而多个环境一套配置
// 本地调试,如何替换魔术值呢
// 解决方法,idea运行时传参
// 程序的参数
public static void main(String[] args) {
for (String arg : args) {
System.out.println("program para = " + arg);
}
// VM options(jvm 参数)
final String vmPara= System.getProperty("vmPara");
System.out.println("vmPara = " + vmPara);
// Environment variable(环境变量)
final String envParam = System.getenv("envParam");
System.out.println("envParam = " + envParam);
}
}
配置程序的参数
参数是通过空格来进行分割的
然后运行程序,输出结果
配置jvm参数
jvm参数以-D为前缀
,后面是参数名称=参数值
-DvmPara=123
表示Jvm参数vmPara=123
运行程序,控制台输出
环境变量
是使用key=value的方式配置值
程序执行之后,输出结果
好用的导航技巧
添加书签
在代码阅读的时候,使用书签来标记代码中重要的实现部分