网站备案收费么,太原建站模板,深圳企业名录深圳黄页,东莞通充值背景
有时候我们线上/测试环境出现了问题#xff0c;我们本地跑却无法复现问题#xff0c;使用idea的远程debug功能可以很好的解决该问题
配置
远程debug的服务#xff0c;我们使用Springboot项目为例(SpringCloud作为微服务项目我们可以可以使用本地注册到远程项目…背景
有时候我们线上/测试环境出现了问题我们本地跑却无法复现问题使用idea的远程debug功能可以很好的解决该问题
配置
远程debug的服务我们使用Springboot项目为例(SpringCloud作为微服务项目我们可以可以使用本地注册到远程项目远程调试可能也并不是好的选择)。首先我们启动SpringBoot需要添加特定的参数
IDEA配置
不同版本的IDEA的配置接界面可能不一致但是总体类似我是用的版本是2020.3.2。 1、配置IDEA 2、我们在配置idea生成的远程JVM的命令行参数(c) 粘贴复制 启动java程序 * 可能需要转义
3、选择远程JVM调试配置使用 debug 方式启动即可
问题
问题1停在本地断点关闭本地程序会怎样
答远程代码会按照远程代码逻辑执行完毕
问题2jar包本地代码和远程不一致会怎样
答不一致会按照远程调用在调用是按照行数去匹配的而不是代码相似度
问题3日志打印
答日志打印会在远程主机毕竟我们实际执行还是远程代码日志并不会打印到本地控制台
问题4调试时别人能否使用
答别人不能使用同步操作要先等到我们的断点过去方能使用所以线上环境不轻易使用远程调试
问题5本地代码修改后远程的能按照修改
答不能同问题2、问题3一样代码实际执行是按照远程代码jar包执行的我们在本地修改是无用的
IDEA能够远程调试的原理
idea的调试原理无论是远程调试还是本地的编译代码调试原理是一样的我们看一下idea本地debug启动后打印的日志 是不是很熟悉和我们上面远程调用的参数十分类似这就是我们能够debug的原因本质上是利用了java Agent原理。这个功能十分强大类似一个AOP代理了java程序可以利用它进行调试、热部署等。
探索
上面说了这么多还有远程debug的缺点而且我们并不常用有没有替代方案呢答案是有的
可以了解一下 Arthas(阿尔萨斯)——java线上问题定位处理的终极利器上面说到了 java Agent 后续可以了解下