IDEA不仅可以本地调试代码,也可以远程调试代码。
一、基本原理
本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。
被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。jdwp是Java Debug Wire Protocol的缩写。
调试程序的本地虚拟机:IDEA 中配置的 Remote Server,指定 Debug 服务器的Host:Port,以供 Debug 客户端程序连接。
二、远程调试步骤
1、IDEA配置启动环境(Debug服务器),如图配置相应信息
2、开启远程Debug服务
1)对于jar包项目
命令行添加启动项,如下:
java "Command line arguments for remote JVM的值" -jar test.jar
注意新参数必须在 -jar 之前
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar test.jar
2)对于war包项目
方法1
- 进入服务器tomcat的catalina.sh文件,添加如下参数后启动tomcat
CATALINA_OPTS="Command line arguments for remote JVM的值"
-
方法2
-
进入服务器端,ps -ef | grep tomcat查看运行参数
-
启动命令 = **/bin/java + idea内Command line arguments for remote JVM的值 +后续运行参数
-
启动tomcat即可
注:
- 远程debug的代码必须与远程部署的代码完全一致,不能发生任何的修改,否则打上的断点将无法命中。
- 这种方式是socket的方式去连远程tomcat的。你需要把端口对外开放。并且他是堵塞式的,同一时间只能支持一台客户端去调试
- 建议调试时尽快走过断点方法,以免阻塞生产环境的使用
- 有时候调试时提示Connect time out,这时候需要关闭防火墙