0. 前置说明
想象这样一个场景:
- 自己在本地电脑上把某一个功能开发完成并自测、和前端联调通过后,部署到测试环境了;
- 测试人员访问测试环境中的项目进行功能测试;
- 测试人员发现了一个bug,并且告知了你;
- 此时你要怎么做呢?
- 以Debug方式启动自己本地的项目;
- 使用postman进行本地debug调试,看看是什么问题导致了测试环境的bug;
- 修改本地代码,重新打包,重新部署到测试环境;
- 测试人员进行验证。
- 如果还是有问题,循环上面的步骤
- 但是如果我可以直接远程调试服务器上的程序呢?
- 在自己本地电脑上打断点;
- 请求测试服务器上的代码;
- 断点进入本地电脑上,就可以直接调试程序,排查bug;
- 这样做的好处是,不用自己使用postman造模拟数据进行本地debug,而是直接使用测试环境的数据进行排查。
1.maven 生成可直接运行的jar包
- 准备可直接运行的jar包(即:SpringBoot项目,打包后可通过java -jar 命令直接运行的jar包),如下图:
2. 把这两个jar包上传到服务器上;
2. 使用java -jar命令运行jar包
- 在服务器上使用如下命令运行上述两个jar包
nohup java -server -Xms256m -Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar demo02-user-auth-center-1.0-SNAPSHOT.jar>demo02.log 2>&1 &
nohup java -server -Xms256m -Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006 -jar demo06-mysql-data-provider-1.0-SNAPSHOT.jar>demo06.log 2>&1 &
3. IDEA中的配置
- 按照如下进行配置
- 访问测试环境,发起请求,如下图:
- 进入本地断点,如下图:
4. 注意事项
- 远程调试从技术上讲,就是在本机与远程建立scoket通讯,所以端口不要冲突,而且本机要允许访问远程端口