远程调试SpringMvc项目

工具 2026-01-05
IDEA JAVA

远程调试SpringMvc项目

分类: 工具 更新: 2026-01-05
IDEA JAVA

IDEA远程debug线上项目(实操版)_瞎琢磨先生の博客-CSDN博客

IDEA(一)如何在IDEA中远程调试Jar包_kuibuzhiqianli的博客-CSDN博客

0. 远程调试SpringMvc项目

  • idea中的 使用tomcat 加载项目启动的debug方式就是使用的远程调试
    • IDEA远程调试代码_1.png

  • 可以不用在关注日志,直接debug查询线上错误
    • 调试 ≠ 改源码后能生效 (已线上代码为准)
      • IDEA远程调试代码_2.png

1. Jar

1.1 启动jar时加入相关命令

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=80

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=80 -jar xxxx.jar &

1.1.1 命令相关


参数含义:
-XDebug 启用调试
-Xnoagent 禁用默认sun.tools.debug调试器
-Djava.compiler=NONE 禁止 JIT 编译器的加载
-Xrunjdwp 加载JDWP的JPDA参考执行实例
transport 用于在调试程序和 JVM 使用的进程之间通讯
dt_socket 套接字传输
server=y/n JVM是否需要作为调试服务器执行
address=2345 调试服务器监听的端口号
suspend=y/n 是否在调试客户端建立连接之后启动 JVM 
注意:-jar参数不能写到-XDebug参数

1.2 启动jar

启动后会等待idea等工具的连接

IDEA远程调试代码_4.png

2. tomcat

2.1 tomcat配置

// 非必要 在服务器上 tomcat 的 bin目录下找到并打开 catalina.sh or catalina.bat 大约282行
if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
## set JPDA_ADDRESS=localhost:8000 #默认
set JPDA_ADDRESS=xx # 修改端口
##eg:set JPDA_ADDRESS=0.0.0.0:1524

2.2 重启tomcat

./shutdown.sh (windows用bat)

2.2.1 使用命令 sh catalina.sh jdpa start 进行启动服务(务必注意:此时不要再启动原来的服务,即 ./start.sh )

<font style="color:#F5222D;">sh catalina.sh jpda start (windows用bat)</font>

3. 配置idea

在idea中按顺序打开Run(运行) => Edit Configurations (编辑配置)=> 

Remote (远程/远程JVM调试)=> Configuration(配置),设置 远程调试的项目名字name、远程需要调试机器的IP地址host、对应的端口号port,且与上面保持一致。Transport、Debugger mode保持默认。

IDEA远程调试代码_5.png IDEA远程调试代码_6.png IDEA远程调试代码_7.png

3.1 配置完成后启动

IDEA远程调试代码_8.png

3.1.2 启动(连接)成功

IDEA远程调试代码_9.png

jar - console 先打印监听 - Listening for transport dt_socket at address: 1122 然后等待监听

如果idea没有启动监听 项目不会启动,证据: swagger页面不能访问

IDEA远程调试代码_10.png

tomcat - 先启动项目 默认监听中 证据:swagger页面在idea没有监听的情况下能访问

当idea监听关闭时会打印 Listening for transport dt_socket at address: 1122 ,表示监听

4. 调试开始

4.1 在源码项目中打上断点

IDEA远程调试代码_11.png

4.2 测试是否能进入断点

4.2.1 访问接口

IDEA远程调试代码_12.png

4.2.2 成功进入断点

IDEA远程调试代码_13.png

5. 注意事项

5.1 注意:-jar参数不能写到-XDebug参数

5.2 使用命令 sh catalina.sh jdpa start 进行启动服务(务必注意:此时不要再启动原来的服务,即 ./start.sh )

5.3    java.net.ConnectException “Connection refused: connect”

5.3.1 线上端口是否开放

nmap工具检测开放端口 (参考

- rpm -ivh nmap-<font style="color:#800080;">4.11</font>-<font style="color:#800080;">1.1</font><font style="color:#000000;">.x86_64.rpm </font>
- rpm -ivh nmap-frontend-<font style="color:#800080;">4.11</font>-<font style="color:#800080;">1.1</font><font style="color:#000000;">.x86_64.rpm</font>
- nmap <font style="color:#800080;">127.0</font>.<font style="color:#800080;">0.1</font>

IDEA远程调试代码_14.png

5.3.2 端口是否冲突

查看某个端口是否被占用: <font style="color:#000000;">lsof lsof -i:端口号</font>

5.4 No executable code found at line

5.4.1 被调试的服务器需要开启调试模式,服务器端的代码和本地代码必须保持一致,则会造成断点无法进入的问题。

文档目录