在开发调试程序当碰到本地功能正常而测试环境出现问题时需要用到远程调试的功能。现针对eclipse下远程调试服务器上的web程序或者java程序作出总结
eclipse远程调试java程序
第一步:远程服务器上的java程序以调试模式启动并指定调试端口
如下截图在远程服务器上用java命令以调试模式启动dubbo服务的java程序并指定调试端口为9990(这个端口后面会用到)
nohup java -Xdebug -Xrunjdwp:transport=dt_socket,address=9990,server=y,suspend=n -Xbootclasspath/a::/app/appsoft/taskpool/conf -jar taskpoolservice-0.0.1.jar com.psbc.cos.TaskpoolserviceApplication && tail -f nohup.out
nohup java -Xdebug -Xrunjdwp:transport=dt_socket,address=9990,server=y,suspend=n com.alibaba.dubbo.container.Main > /local/tmp/debug.logs 2>&1 &
第二步:在eclipse中配置远程调试并打上断点以debug模式启动与服务器上同样的程序(开始调试前需要确保本地服务代码与远程服务器上的代码一致)
在eclipse的java启动类中右键->Debug As->Debug Configurations
创建一个远程调试服务
设置服务调试信息,注意端口与服务器上的服务调试商品保持一致并且本地到远程服务器的网络畅通,设置完成后点击Debug将本地服务以调试模式启动
启动成功后会出现如下图红框内所示的图标(调试完成后也可点击该图标断开远程调试)
如下图所示为我本地接收到远程服务器上的请求进而可以进行远程调试的效果图
eclipse远程调试tomcat程序
在eclipse中远程调试tomcat程序的方法与调试JAVA程序类似,不同之处在于远程服务器启动tomcat时加入相应调试JVM参数,由于时间原因这里不详细说明,贴上网上一的参考链接:https://jingyan.baidu.com/article/0320e2c1f4ef6b1b87507b06.html
修改tomcat的启动脚本startup.bat。复制startup.bat为startup-debug.bat,然后打开startup-debug.bat,找到call "%EXECUTABLE%" start %CMD_LINE_ARGS%这一行,修改为“call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%”,然后在上面添加三行:
set JPDA_TRANSPORT=dt_socket
set JPDA_ADDRESS=9000
set JPDA_SUSPEND=n
设置好服务器以debug模式启动并指定端口后,仍然如前面所述在本地tomcat启动参数中加入远程调试参数并启动即可对远程环境上的相应程序进行调试
By the way:如果你的远程linux服务器开启了防火墙,且你在eclipse里开启远程调试时报错connection refused,connect timeout,需要检查一下是否未开通对应调试端口的防火墙访问权限,按如下方式添加:
1、linux开放服务端口
vi /etc/sysconfig/iptables
加入如下内容
-A INPUT -p tcp -m tcp --dport 6001 -j ACCEPT
2、保存退出,重启服务 service iptables restart