2013-03-02 33 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。