-
目的
- 当服务器上代码出现错误时,通过日志去分析比较麻烦,有些时候可能还无法准确定位问题的原因;所以通过远程debug联调服务器代码,准确且高效。
-
服务端配置
- 首先,我们要让要让远程服务器支持远程调试功能,在项目启动项上追加特定的 JVM 参数即可,参数如下:
- Command line arguments for running remote JVM(晚于 JDK 1.4.X 版本)
- |
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9508
- JDK 1.4.X 版本
- |
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9508
- JDK 1.3.X 或早起版本
- |
-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9508
- 第一种:Spring boot 通过 java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9508 xxx.jar & ,配置到启动命令行中;
- 第二种:在 catalina.bat(linux 环境设置 catalina.sh)中设置 JAVA_OPTS 节点即可。—— 配置服务器Tomcat
进入$TOMCAT_HOME/bin目录下:vi catalina.sh #在# OS specific support.上面添加 export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9508'
- 首先,我们要让要让远程服务器支持远程调试功能,在项目启动项上追加特定的 JVM 参数即可,参数如下:
-
Idea配置
- 点击 Edit Configurations,即可进入 Run/Debug Configurations 界面,配置remote:
-
启动调试
- 点击下图标识的debug启动标,启动成功会在console面板上输出:Connected to the target VM, address: '140.143.29.146:9508', transport: 'socket'
-
可能出现的问题及解决方法
- 问题:
- 第一个问题:Error running 'remote-ms-collection': Unable to open debugger port (XXXX:9508): java.net.ConnectException "Connection timed out: connect"
- 第二种问题:IP和端口号都没问题但是"Connection refused"
- 解决方法:
- 开启相关端口:
-
vi /etc/sysconfig/iptables #在-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT之后添加 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 9508 -j ACCEPT
- 重启防火墙:
service iptables restart
- 如果嫌麻烦或者对安全要求不高直接关闭防火墙也行:
service iptables stop
- 重启服务
- 问题:
-
注:远程debug只能同时保证一个客户端连接
参考地址:
https://www.cnblogs.com/krockey/p/5056945.html