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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用操作数堆栈和本地可视化进行Java字节码调试?相关的知识,希望对你有一定的参考价值。

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

我遇到了Garbage博士的Bytecode Visualizer Eclipse插件,它允许打破和单步执行Bytecode,但它不能可视化JVM状态:

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

以下相关问题(相当陈旧)提到了一些工具,其中一些允许单步执行Bytecode,但没有一个具有JVM状态可视化:

是否有这样的工具,能够调试简单的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字节码调试?的主要内容,如果未能解决你的问题,请参考以下文章

急!!!关于使用ASM进行JAVA字节码操作的问题

JVM 体系结构

JVM 的 noverify 启动参数

从零写一个编译器:代码生成之Java字节码基础

Java字节码的执行是由啥完成的?

java考试