NTL01 jpda追踪的是哪个层面上的运行过程?到字节码为止,以即时执行为准还是什么?
追踪的就是正常运行。
==============================
调试的大致流程如下
Debugger -> JDI -> JDWP(通讯协议) -> JVM TI(VM 提供的 native 接口) -> VM
其中 JDI -> JDWP -> JVM TI ,这三个就是 JPDA
有两种方式来使用 JPDA:
- Debugger 通过 JDI 来运行一个 VM ,用这个 VM 来运行 待调试程序
- 直接 connect 一个 VM(远程调试)
这两种方式仅在待调试程序所在的 VM 的启动方式有区别而已。
综上,JPDA 实际上和编译没什么关系,都是 VM 的事情。
NTL01 编译结果(类文件)跟源代码的对应是怎么处理的?比如有些短小的方法被内嵌了,局部顺序调整和变量优化什么的。对此我暂时还没有时间(甚至能力?)分析。。。
我认为编译不会做这些优化,感觉没必要,VM 的运行优化才是大头。