2013-03-02 57 views
6

我想知道是否有任何支持混合模式調試的IDE或Eclipse插件。當我搜索混合模式這個術語時,發現很多調試VM語言的引用以及本機代碼。用字節碼進行Java調試

但我提到的功能與編譯語言(如C)中可用的功能類似,用戶可以看到C源代碼行與相應的裝配線並排放置,並且即使在裝配級也能夠進入。 (請原諒我要是通過調用該功能爲混合模式做了一個命名錯誤)

換句話說,我找了以下功能,同時調試Java:

  1. 能力的Java源代碼和程序執行
  2. 能夠查看JVM PC寄存器和操作數堆棧
  3. 能夠查看其它JVM特定數據結構(例如常量池)
期間對應的字節代碼

這是爲了瞭解Java源代碼如何映射到字節代碼以及在加入時如何影響各種JVM關聯的數據結構。

+0

您不需要調試器即可瞭解Java源代碼如何映射到字節碼。只需使用'javap'。 – 2013-03-02 19:00:49

+0

好問題!使用gdb或MSVS調試器,您可以在彙編級別以及高級語言級別進行調試。我很好奇,是否有任何方法可以從Java IDE中做類似的事情。這裏有一些建議:[如何在Eclipse中調試編譯的Java](http://stackoverflow.com/questions/1905446/how-to-debug-compiled-java-code-in-eclipse),和[是否有調試器/反彙編爲Java?](http://stackoverflow.com/questions/2539614/is-there-a-disassembler-debugger-for-java-ala-ollydbg-softice-for-assembler) – paulsm4 2013-03-02 19:07:55

+0

這不僅僅是一個問題的IDE和插件。這樣的特性需要JVM本身的密切支持。我想另一種方法是使用定製的JVM實現。 – Antimony 2013-03-02 19:13:53

回答

0

您不需要調試器即可瞭解Java代碼如何映射到編譯的本機代碼。您可以使用-XX:+PrintCompilation JVM標誌。請參閱Stephen Colebourne's blog post中的模式信息以及Kris Mok reply to that post中的更多詳細信息。

您可能還會發現HotSpot Internals Wiki有用。

+1

我相信OP想要在字節碼級別進行調試,而不是本地代碼。 – Antimony 2013-03-02 19:38:21

+0

我讀的OP想了解Java源代碼如何映射到字節碼以及各種JVM關聯的數據結構如何受到影響。 – 2013-03-03 22:00:43

1

我是一名DSL開發人員,多次遇到同樣的問題。

我發現的唯一工具是Dr. Garbage工具。

目前,它們似乎並沒有得到最好的維護,但它們可以使用適當版本的eclipse。