JVM如何允许调试内核线程?

时间:2019-07-16 16:43:15

标签: multithreading jvm internals

我了解 .class 文件包含与字节码关联的行号,以便于here中所述的调试程序的工作。

我也理解每个线程都有自己的 pc寄存器,它们指向下一条指令,如here所述。通过使用这些寄存器,调试器可以例如通过将指令与行号相关联而在特定行处停止。

我也理解Java线程绑定到OS线程,这些OS线程作为本机代码执行。

但是, pc寄存器的描述是

  

如果线程当前正在执行的方法是本地方法,则Java虚拟机的pc寄存器的值未定义。

然后的问题是:如果调试器使用与字节码指令关联的行号,并且 pc寄存器通知下一条指令,那么如果有可能,如何调试线程代码(如果确实如此)它是作为本机代码执行的,并且由于 pc寄存器的值未定义?

我怎么了?

0 个答案:

没有答案