开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情
一个场景:假如你的服务需要依附于其他的各种服务才能调用,而且本地调试的时候为了不启用过多的服务占用电脑性能,那么你可以采取
远程Debug
我们先来说下原理:
- 部署的服务通过命令开启远程调试,相当于创建了TCP的服务端
- 本地服务开启远程调试,相当于TCP客户端
- 他们之间同步debug协议进行socket通信
- 前提保证代码是同步过的
1.IDEA 打开 Debug 调试
复制红框里面的代码
2.远程服务开启端口
开放端口 5005 ,这个端口跟上面的命令的端口保持一致(这个开端口的步骤是根据自己的情况来的,比如有些同学是云服务器就需要开安全组,这个自己搜下就知道怎么开了)
- sudo apt-get install iptables
- iptables -I INPUT -p tcp --dport 5005 -j ACCEPT
- iptables-save
完成上述命令我们就完成了开放指定的端口,但是如果此时服务器重启,上述规则就没有了,所以我们需要对规则进行一下持续化操作
持续化规则
这里我们需要在安装一下工具来帮我们实现,这里我们使用 iptables-persistent
安装iptables-persistent
- sudo apt-get install iptables-persistent 1
持久化规则
- sudo netfilter-persistent save $ sudo netfilter-persistent reload 12
完成上述操作就可以永久打开我们需要的端口了
3.服务器开起远程调试
将代码 追加到java -jar 后面
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
变成这样
java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
然后启动
这样代表服务已经启动,然后正在监听客户端连接
再启动本地服务
如果出现下面的打印就代表成功了
最后你可以在自己的编辑器上打断点,然后在远程服务接收到请求就能够在本地的编辑器被断点停住了