1.条件
- 远程代码需要和本地供调试的代码一样,不然有问题都找不到,调试端打上断点后显示为X
- 远程端访问端口需要对外开放可访问
2.远程启动项目配置
如果是启动jar包,指令:
java -Xdebug-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -xxxx.jar
例:
-Dsite.maskSensitiveInfo.disabled=true -jar -Xmx1G -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5000 yunkong-admin-api-1.0-SNAPSHOT.jar -Dspring.profile.active=dev
这里-Xdebug是通知JVM工作在DEBUG模式下,-Xrunjdwp是通知JVM使用(java debug wire protocol)来运行调试环境。transport是监听Socket端口连接方式(也可以dt_shmem共享内存方式,但限于windows机器,并且服务提供端和调试端只能位于同一台机)。server=y表示当前是调试服务端,=n表示当前是调试客户端。suspend=n表示启动时不中断(如果启动时中断,一般用于调试启动不了的问题)。address=8000表示本地监听8000端口。[1]
如果需要配置服务器Tomcat
进入$TOMCAT_HOME/bin目录下
vi catalina.sh
/OS 搜索到OS specific support
#在# OS specific support.上面添加
export JAVA_OPTS="$JAVA_OPTS-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
本地开发工具调试
-
1
-
2
-
3
ip 是远程项目服务器ip port:8000 是上文提到的address=8000
在调试工具debug启动配置的remote即可开始调试,控制台出现这个表示成功
Connected to the target VM, address: ‘192.168.xx.xx:8000’, transport: ‘socket’ -
如果端口未开放 [2]
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 5005 -j ACCEPT
重启防火墙
service iptables restart
如果嫌麻烦或者对安全要求不高直接关闭防火墙也行
service iptables stop
感谢老铁的资料:
引用1:https://blog.youkuaiyun.com/m0_38001814/article/details/79170346
引用2:https://www.jianshu.com/p/f902ac5d29e4