一、远程调试应用场景
在项目开发过程中,经常会遇到测试人员反馈某些功能存在问题,而开发人员则可能回应称在本地测试正常,这时候我们不得不考虑,到底是环境问题、数据问题还是程序问题呢?或者任务测试通过后在测试环境也正常,但在预发布环境出现问题。那么,是否有一种方法能够像本地调试一样进行远程调试呢?
Java Web项目的远程调试(Remote Debugging)是在开发和维护阶段非常有用的一项技术,尤其适用于以下几种应用场景:
- 生产环境问题复现:生产环境中出现的问题往往难以在开发或测试环境中复现。通过远程调试工具连接到生产服务器,可以直接在生产环境上进行问题定位和修复。
- 客户现场支持:对于驻场开发或需要快速响应客户需求的情况,开发者可以通过远程调试的方式直接连接到客户的服务器进行问题分析和解决。
- 持续集成/持续部署(CI/CD):在CI/CD流程中,如果构建或部署过程中出现问题,可以通过预先配置好的远程调试功能快速定位并解决问题。
二、web项目开启远程调试
在启动脚本中增加如下配置参数:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=192.168.1.224:5005
配置idea远程连接即可
三、docker容器内的项目远程调试
1、dockerfile中环境变量JAVA_OPTS增加远程调试配置
-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n
2、nodeport暴漏容器8000端口到外部端口31556
3、配置远程Debug,由于使用的是nodeport方式暴漏端口,所以ip地址使用集群中任意一台主机ip均可