繁体   English   中英

Hotspot JVM 的 JITed 代码中可以设置断点吗?

[英]Can breakpoints be placed in JITed code in the Hotspot JVM?

我已经读到这是可能的,在(现已退役的) Harmony JVM中,但是热点 JVM 呢? 这可能吗? 如果没有,断点是否会阻止代码被 JITed,这意味着断点的成本更高?

发生的情况是 JVM 取消优化该方法以允许向其添加断点。

去优化并不一定意味着该方法返回为字节码形式并且仅被解释。 但它可能会撤消重新排序代码、内联方法等的优化。 这些使得调试器很难将执行 state 与源代码联系起来......这就是程序员正在查看的内容。

但是,是的,在调试模式下运行代码确实会使其变慢。


这样想,当您在符号调试器中调试 C 可执行文件时,C 代码已(静态)编译为本机代码并链接。 然而,调试器能够插入断点、单步执行代码、查看堆栈上的变量等等。

如果有的话,JVM 更容易做到这一点......因为 >>it<< 控制编译为本机代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM