java远程debug

为什么要远程debug

个人理解俩方面原因

1.公司项目复杂,启动依赖较多,为了网络安全都是内网配置,还有环境变量限制等等诸多元素导致本地不方便调试

2.线上项目出问题,本地无法复现,前提切断用户流量,http,dubbo,mq相关流量断开,否则有可能影响正常用户使用流程


准备工作:

保证本地ip和远程服务器ip网络能通

1.服务器 安装socat,socat 安装使用

socat 理解位转发调试请求到本地

2.启动脚本修改,开启debug,指定debug参数

-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=127.0.0.1:5010

最后的端口可以修改 按照自己需求即可 此端口和下面 5010 保持一致即可

3.后台启动socat

sudo nohup socat TCP4-LISTEN:5013,fork,range=xxx.xxx.xxx.xx/8 TCP4:127.0.0.1:5010 &

5013就是本地调试时与服务器调试ip

rang=自己ipxxx.xxx.xxx.xx  /8 代表8比特  

TCP4 服务器本地ip和debug的端口 5010和上面保持一致即可

3.把上述参数指定项目重启jar 或者tomcat 重启即可

4.本地idea 选择remote-输入服务器ip或者域名 port 保存debug 运行即可。

本地idea启动前保证服务器socat配置正确且再后台运行,远程服务器项目已经开始启动,也可以调试启动过程,前提服务器一启动就本地抓紧启动,要有对应断点。

你可能感兴趣的:(java远程debug)