如何使用IntelliJ IDEA CE(社区版)调试Spring Boot应用
IntelliJ IDEA CE 调试Spring Boot REST API操作指引
你之前调试Grails用到的远程JVM调试逻辑完全可以复用在Spring Boot场景下,IntelliJ IDEA社区版原生支持所有调试能力,不需要安装付费插件。
方式一:和Grails调试逻辑一致的远程调试法(零学习成本)
整套流程和你之前的操作习惯完全匹配,步骤如下:
- 配置构建工具的调试启动参数
如果是Gradle构建的项目,打开根目录下的build.gradle文件,添加如下配置:
如果是Maven构建的项目,不需要修改配置文件,启动时带参数即可。bootRun { jvmArgs "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005" } - 启动应用等待调试器连接
Gradle项目:打开IDEA底部的Terminal面板,执行./gradlew bootRun(Windows系统执行gradlew.bat bootRun),等控制台输出Listening for transport dt_socket at address: 5005时,说明应用已经在5005端口等待调试连接。
Maven项目:在Terminal执行mvn spring-boot:run -Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005",同样等待5005端口监听的提示出现。 - 配置IDEA远程调试项
点击IDEA顶部右上角的运行配置下拉框,选择Edit Configurations,在弹出窗口左上角点击+号,列表中选择Remote JVM Debug,所有配置保持默认值即可(Host为localhost,端口为5005),点击OK保存。 - 打断点启动调试
在需要排查问题的业务代码行,点击行号旁的空白位置打出红色断点标记,点击右上角运行配置旁的绿色虫子图标(Debug按钮),控制台输出Connected to the target VM即为连接成功。此时向REST API发送请求,代码执行到断点位置会自动暂停,你可以查看变量值、单步执行定位问题,操作和之前调试Grails完全一致。
方式二:IDEA本地直接调试(无需敲命令,更简便)
IntelliJ IDEA CE原生支持Spring Boot直接调试启动,不需要走远程连接流程:
- 找到项目的启动类:即标注了
@SpringBootApplication注解的类,类名一般为*Application,类中包含public static void main(String[] args)主方法。 - 点击主方法旁行号位置的绿色箭头,在弹出选项中选择
Debug 'xxxApplication',应用会直接以调试模式启动。 - 在业务代码行打好断点,请求触发到对应代码时就会自动暂停,后续调试操作和远程调试完全一致。
注意:如果直接启动报类不存在或启动失败,先在Terminal执行一次
./gradlew build(Gradle项目)或mvn compile(Maven项目)完成项目编译,再启动调试即可,绝大多数启动异常都是未提前编译导致的。
常见问题排查
- 远程调试连接失败:先确认控制台已经输出5005端口监听的提示,未出现提示不要提前点Debug连接;如果提示端口占用,把启动参数和远程调试配置里的5005改成其他未被占用的端口(比如5006)即可。
- 断点不生效:确认断点打在实际执行业务逻辑的代码行,不要打在空行、注释、方法声明行上;如果修改过代码没有重新编译启动,断点也会失效,重新build项目后再调试即可。
内容的提问来源于stack exchange,提问作者D Nunes
相关产品推荐
相关产品推荐

