IntelliJ IDEA 的 debug
调试为什么这么强?我挖出了背后的技术。。
初学 Java 时,我对 IDEA 的 Debug
非常好奇,不止是它能查看断点的上下文环境,更神奇的是我可以在断点
处使用它的 Evaluate
功能直接执行某些命令,进行一些计算或改变当前变量。
刚开始语法不熟经常写错代码,重新打包部署一次代码耗时很长,我就直
接面向 Debug 开发。在要编写的方法开始处打一个断点,在 Evaluate
框内一次次地执行方法函数不停地调整代码,没问题后再将代码复制出来
放到 IDEA 里,再进行下一个方法的编写,这样就跟写 PHP
类似的解释性语言一样,写完即执行,非常方便。
图片
但 Java
是静态语言,运行之前是要先进行编译的,难道我写的这些代码是被实时
编译又”注入”到我正在 Debug 的服务里了吗?
随着对 Java
的愈加熟悉,我也了解了反射、字节码等技术,直到前些天的周会分享,
有位同事分享了 Btrace 的使用和实现,提到了 Java 的 ASM 框架和 JVM
TI 接口。
Btrace 修改代码能力的实现与 Debug 的 Evaluate
有很多相似之处,这大大吸引了我。分享就像一个引子,从中学到的东西