如何从命令提示符调试Spring Boot代码?能否用STS调试命令行启动实例?
如何从命令提示符调试Spring Boot应用 & 用STS调试命令行启动的应用
嘿,我来帮你搞定这两个问题!下面分两部分详细说明:
一、从命令提示符直接调试Spring Boot应用
要在命令行下调试Spring Boot应用,首先得让应用开启远程调试模式,然后用JDK自带的jdb工具连接调试。
1. 启动带调试参数的Spring Boot应用
根据你启动应用的方式,选择对应的命令:
- 如果用Maven启动:
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" - 如果是直接运行Jar包:
java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 your-spring-boot-app.jar
参数解释:
transport=dt_socket:指定调试用的通信协议server=y:让应用作为调试服务器,等待调试器连接suspend=n:应用启动时不挂起,直接运行(如果要调试启动初始化逻辑,改成suspend=y,应用会暂停在启动阶段,等调试器连接后再继续)address=5005:调试监听的端口,选一个没被占用的就行
2. 用jdb命令行工具调试
打开另一个命令提示符窗口,执行:
jdb -attach localhost:5005
连接成功后,就可以用jdb的调试命令操作了,常用的有:
stop at 包名.类名:行号:设置断点,比如stop at com.example.demo.DemoController:20run:继续执行(如果之前用了suspend=y)next:单步执行(不进入方法)step:单步执行(进入方法)print 变量名:查看变量值list:显示当前代码附近的内容
不过说实话,命令行的jdb用起来不如IDE顺手,所以更推荐下面的STS调试方案。
二、用STS调试命令提示符启动的Spring Boot应用
完全可以!这也是提升开发效率的好办法,步骤如下:
1. 先按上面的方法,用命令行启动带调试参数的Spring Boot应用
确保应用已经启动并监听了调试端口(比如5005)。
2. 在STS中配置远程调试连接
- 打开STS,点击顶部菜单栏的
Run->Debug Configurations - 在弹出的窗口左侧,找到
Remote Java Application,右键选择New - 在配置页面填写以下信息:
- Project:选择你的Spring Boot项目(确保STS里的代码和命令行运行的代码版本完全一致,不然断点会不匹配)
- Connection Type:选择
Standard (Socket Attach) - Host:填
localhost(如果应用在远程服务器上,就填服务器IP) - Port:填你启动应用时设置的调试端口(比如5005)
- 点击
Debug按钮,STS就会连接到命令行启动的应用了
3. 开始调试
连接成功后,你就可以像平时在STS里调试本地启动的应用一样:
- 在代码里设置断点(点击行号左侧的空白处)
- 触发应用的请求(比如调用接口),代码会停在断点处
- 查看变量、单步执行、评估表达式等操作都和本地调试完全一样
注意事项
- 调试端口不要被其他程序占用,如果5005被用了,换个端口比如5006就行
- 如果要调试应用启动时的初始化代码(比如Bean初始化),记得把启动参数里的
suspend=n改成suspend=y,这样应用会等待STS连接后再继续启动 - 确保STS中的代码和命令行运行的Jar包代码一致,否则断点可能无法命中
内容的提问来源于stack exchange,提问作者Mayur
相关产品推荐
相关产品推荐

