簡體   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