IDEA调试不执行最新代码原创
金蝶云社区-Coding
Coding
3人赞赏了该文章 1992次浏览 未经作者许可,禁止转载编辑于2023年09月06日 17:27:55

IDEA 的DEBUG 运行时,发现一个很奇怪的现象,本地的代码明明对比服务器丢的代码做了改动,但调试的时候,被注释掉的代码依旧在运行,且还能获取到被注释掉的变量。无论用gradle clean、refresh和invalidate cache等清空缓存的方法多少遍,还是一样的效果,且编译生成的class确定已经是更改后的代码,此时可以确定Cosmic最终执行了另外一套class,但是确实找不出来在哪。


感谢 @ISV生态赋能匡唐喜  老师的帮助,在断点运行的时候,IDEA添加watches,

getClass().getClassLoader().getResource("com/isv/module/XXX.class").getPath();

获取执行的class地址,发现最后真正运行的class文件并不是我们IDEA工程编译生成的class文件,我这里是因为在配置gradle的时候,因为多数据中心,把lib的cus目录依然拉进了工程,导致并没有执行工程代码,而执行了mservice/lib/cus/xxx.jar里面自己打包好的插件包。


另外匡老师也提供了第二种的方案:

Arthas,学习链接阿里开源的那个牛X的问题排查工具——Arthas,推出IDEA插件了!-阿里云开发者社区 (aliyun.com)

,适合用于生产环境服务器没有办法调试的时候用。

赞 3