IDEA 进行远程 Debug

299 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情

一个场景:假如你的服务需要依附于其他的各种服务才能调用,而且本地调试的时候为了不启用过多的服务占用电脑性能,那么你可以采取 远程Debug

我们先来说下原理:

  1. 部署的服务通过命令开启远程调试,相当于创建了TCP的服务端
  2. 本地服务开启远程调试,相当于TCP客户端
  3. 他们之间同步debug协议进行socket通信
  4. 前提保证代码是同步过的

1.IDEA 打开 Debug 调试

image.png

image.png

复制红框里面的代码

image.png

2.远程服务开启端口

开放端口 5005 ,这个端口跟上面的命令的端口保持一致(这个开端口的步骤是根据自己的情况来的,比如有些同学是云服务器就需要开安全组,这个自己搜下就知道怎么开了)

  1. sudo apt-get install iptables
  2. iptables -I INPUT -p tcp --dport 5005 -j ACCEPT
  3. iptables-save

完成上述命令我们就完成了开放指定的端口,但是如果此时服务器重启,上述规则就没有了,所以我们需要对规则进行一下持续化操作
持续化规则

这里我们需要在安装一下工具来帮我们实现,这里我们使用 iptables-persistent

安装iptables-persistent

  1. sudo apt-get install iptables-persistent 1

持久化规则

  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

然后启动

image.png 这样代表服务已经启动,然后正在监听客户端连接

再启动本地服务

image.png

如果出现下面的打印就代表成功了

image.png

最后你可以在自己的编辑器上打断点,然后在远程服务接收到请求就能够在本地的编辑器被断点停住了