本地idea远程调试服务器程序

1、点1处后点击2处,进入远程debug配置页面

2、在Remote下面添加配置文件,主要的参数如下:

详细参数解释:

3、点击Apply后,点击OK按钮

4、注意事项

a、请确保在所有这些示例中,远程调试端口(如5005)未被防火墙或任何网络策略阻塞,并且你的安全设置允许你从IDE连接到远程服务器上的这个端口。

b.确保调试端口不对外暴露,避免安全风险。

c.远程调试可能会影响应用程序性能,不宜在高峰时段进行。

d.必须确保拥有足够权限在远程服务器上启动调试模式。

e.需要稳定的网络连接以保证调试会话不会中断。

5、IDEA 远程调试的细节 

细节1:停在本地断点,关闭程序后会继续执行吗

如果远程调试在自己的断点处停下来了,此时关闭IDEA中的项目停止运行,则还会继续运行执行完剩下的逻辑吗?会的,这点比较不容易记住

以下面的代码为例,在第一行停住了。然后IDEA中停掉,发现停掉之后控制台还是打印了剩下的日志。

使用 IDEA 远程 Debug 调试(一篇懂所有)

细节2:jar包代码和本地不一致会怎么样?

IDEA 里的代码如果不和jar包的一致,会怎么样。

结论:要保证和远程启动的代码一致。

否则你debug的时候的行数会对不上。报错抛异常倒是不会。像这种还是能对得上行数的

比如你调试test1方法,test2方法在test1下面,在test2里加代码,这样并不影响test1中的行号,这种是可以在调试的时候准确反应行号的

细节3:日志打印在哪里?

日志不会打印在IDEA的控制台上。即System.out 以及 log.info 还是打印在远程的。

@GetMapping("/test1")
public String test1() {
 System.out.println("第一行");
 System.out.println("第二行");
 log.info("log 第一行");
 log.info("log 第二行");
return"ok";
}

细节4:调试时其他人会不会卡住?

远程调试的时候,打了断点,停住后会不会导致页面的请求卡住。

比如你使用远程调试,别的QA在测试这个页面,结果他们看到的结果是怎么样的?会卡住吗?会的,已经实际遇到过这种情况了。

细节5:本地代码修复bug远程调用的时候

如果在远程调试过程自己发现了bug,本地改好后重新启动IDEA里的项目,再到页面调用一次,能修复吗?不能,运行的还是远程部署的jar中的代码

这个直接击碎了远程页面点一点触发本地代码进行debug的梦想。如果可以的话那调试代码就方便太多。

细节6:这个不算远程调试的问题,是dropframe的问题,放在这里一起讲了

关于drop frame的问题,如果drop frame了重新进行调试,会不会插入2条记录?

如图 userMapper.insert(eo) ,本方法没有使用 @Transactional 修饰,mapper方法执行过后事务会被立即提交,则库表里多了一行记录,如果drop frame后,再次进行调试,再次执行这代码,于是又插入了一条记录。

使用 IDEA 远程 Debug 调试(一篇懂所有)

如果加上 @Transational 就不会有两条记录了,dropframe的时候事务没被提交,再次执行该插入代码也不会插入2条。

关于什么是drop frame

使用 IDEA 远程 Debug 调试(一篇懂所有)

细节7:跟上面一样,是dropframe问题

如果把上述插入数据库的逻辑,换成调用远程的接口,在dropframe后,再次执行相同的代码,会不会导致远程接口被执行了2次?会的。

总结

好像感觉远程调试的用处也不是那么大,不能作为长期使用的调试工具。只能作为临时调试的手段。

难点有几个:

  • 难保证本地代码和远程一致,而且你也很难判断是否一致

  • 通过远程调试发现了bug,但是又不能立即修复后继续调试,只能修复后部署后继续远程调试

参考文章链接:

百度安全验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值