我正在寻找一个用于调试和单步调试 Java 字节码的工具, 基本 JVM 状态的可视化,包括操作数堆栈和局部变量数组,仅用于教育目的和 JVM 学习(对于我自己,也希望对其他人来说)。手头有这样的工具吗?
我遇到了 Dr. Garbage 的 Bytecode Visualizer Eclipse 插件,它允许中断和单步执行 Bytecode,但它不能可视化 JVM 状态:
http://www.drgarbage.com/bytecode-visualizer
以下相关问题(相当古老)提到了一些工具,其中一些允许单步执行字节码,但没有一个具有 JVM 状态可视化:
- Are there any JVM simulators / bytecode execution visualizers?
- Is there a disassembler + debugger for java (ala OllyDbg / SoftICE for assembler)?
- Java debugging with byte codes
手头有这样一个工具,能够调试简单的Java程序吗?或者甚至是一个简单的 JVM 模拟器?
谢谢!
最佳答案
我已经改编了 PyJVM去做你想做的事。它为 Java 程序的每个线程显示了一个简单的 GUI(必须针对 Java7 进行编译)。
这个工具的唯一问题是它没有 GC,因为垃圾收集是由 Python 本身处理的。因此,线程 1(守护进程)(引用处理程序)将永远不会执行任何操作。 Finalize方法也不会触发。
来源可在 https://github.com/MatevzFa/pyjvm 上找到(警告:源代码不太好看),您也可以使用 pip
安装它(实际上是 pip2
,因为 PyJVM是用Python2编写的)。
安装:
pip install pyjvmgui
升级:
pip install pyjvmgui --upgrade --no-deps
我仍然必须为其编写一个好的自述文件。
关于使用操作数堆栈和局部变量可视化进行 Java 字节代码调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44308719/