远程调试SpringMvc项目
远程调试SpringMvc项目
IDEA远程debug线上项目(实操版)_瞎琢磨先生の博客-CSDN博客
IDEA(一)如何在IDEA中远程调试Jar包_kuibuzhiqianli的博客-CSDN博客
0. 远程调试SpringMvc项目
-
idea中的 使用tomcat 加载项目启动的debug方式就是使用的远程调试
-
-
可以不用在关注日志,直接debug查询线上错误
-
调试
≠ 改源码后能生效 (已线上代码为准)
-
-
调试
≠ 改源码后能生效 (已线上代码为准)
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等工具的连接

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保持默认。




3.1 配置完成后启动

3.1.2 启动(连接)成功

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

tomcat - 先启动项目 默认监听中 证据:swagger页面在idea没有监听的情况下能访问
当idea监听关闭时会打印 Listening for transport dt_socket at address: 1122 ,表示监听
4. 调试开始
4.1 在源码项目中打上断点

4.2 测试是否能进入断点
4.2.1 访问接口

4.2.2 成功进入断点

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>

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



