远程调试的原理

本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。

被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。jdwp是Java Debug Wire Protocol的缩写。

调试程序的本地虚拟机:IDEA 中配置的 Remote Server,指定 Debug 服务器的Host:Port,以供 Debug 客户端程序连接。

如何进行远程调试

idea设置

IDEA 远程调试_jar

远程项目设置

idea设置好了,复制命令行参数,我们需要去启动项目的地方设置,启动项目有通过tomcat启动的,也有通过springboot内置tomcat启动的,下面分别说

springboot方式

## 注意新参数必须在 -jar 之前
jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar test.jar

Tomcat方式

​start.sh​​(windows下是​​start.bat​​)中添加如下,

IDEA 远程调试_jar_02

## sudo vim $CATALINA_HOME/bin/
JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

到此就设置好了,在idea中打上断点,然后启动Remote来进行调试吧。

IDEA 远程调试_idea远程调试_03

问题

  1. 可能需要远程服务器的防火墙放行5005端口
### sudo vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5005 -j ACCEPT
### 重启生效: sudo systemctl restart iptables
  1. 远程代码需要与本地代码完全一致