Java 使用操作数堆栈和本地可视化进行字节码调试?

Java byte code debugging with operand stack and locals visualization?

我正在寻找一个调试和单步执行 Java 字节码的工具, 可视化基本 JVM 状态,包括操作数堆栈和局部变量数组,仅用于教育目的和 JVM 学习(对我自己,也希望对其他人)。手边有这样的工具吗?

我遇到了 Dr. Garbage 的 Bytecode Visualizer Eclipse 插件,它允许中断和单步执行字节码,但它没有可视化 JVM 状态:

http://www.drgarbage.com/bytecode-visualizer

以下相关问题(很老)提到了一些工具,其中一些允许单步执行字节码,但 none 具有 JVM 状态可视化:

手头有这样的工具,能够调试简单的 Java 程序吗?或者甚至是一个简单的 JVM 模拟器?

谢谢!

我已经对 PyJVM 进行了调整以实现您的目标。它为 Java 程序的每个线程显示了一个简单的图形用户界面(它们必须为 Java7 编译)。

此工具的唯一问题是它没有 GC,因为垃圾收集由 Python 本身处理。因此,Thread 1(守护进程)(引用处理程序)永远不会做任何事情。 finalize 方法也不会触发。

源代码在 https://github.com/MatevzFa/pyjvm 上可用(警告: 源代码看起来不太好看),您也可以使用 [=12= 安装它](pip2 实际上,因为 PyJVM 是用 Python2 编写的)。

安装:

pip install pyjvmgui

升级:

pip install pyjvmgui --upgrade --no-deps

我仍然需要为它写一个好的 README。