远程调试是指服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须和远程服务器运行的代码一致)中设置断点,每当有请求到远程服务器时时能够在本地知道远程服务端的此时的内部状态。
一、 场景
1. 第三方接口开发的异步回调接口;如:微信支付、支付宝支付等
2. 依赖特定环境的测试,只能把本地代码放入到该环境中;
二、 常见环境
1. 在服务器端以Jar启动的应用,如现在非常流行的Spring Boot
a. 在启动springboot时默认使用java命令来启动。 比如,示例项目启动命令为:java -jar xxx. jar
开启远程调试模式的命令为:
java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 xxxx.jar复制代码
执行该命令后,在服务器端会开启远程调试端口5005(端口可自定义,但要注意服务器防火墙); 在客户端可以通过 telnet host port命令
检查服务器远程端口是否可以连接。
b. 在开发机器上IDEA工具 配置
首先 Edit configurations,点击+号,创建一个Remote应用。
填写name,配置Host地址(远程服务器地址)和端口(选一个未被占用的端口)。
点击Ok按钮,再启动刚才配置的Remote服务; 看控制台输出信息,是否与服务器端建立连接; 建立连接完成,对需要debug的代码打上断点
,剩下的操作步骤就是访问远程服务器对应的业务请求,本地就会同步debug。其余的操作与本地debug相同,此处就不再赘述了。
2. 以Tomcat启动的Web项目
a. 在服务器上开启tomcat远程调试命令(已Windows为例): %TOMCAT_HOME%\bin\catalina.bat jpda start;
在服务器端口开启远程调试默认端口: 8000;
如需更改TOMCAT开放默认远程调试端口
方法1、
WIN系统,在catalina.bat里:
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005复制代码
Linux系统,在catalina.sh里:
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" 复制代码
b. 开发机器IDEA 配置请参考上面 IDEA工具配置