2011-12-21 54 views
0

我投射到我自己的字节码调试器构建查看:使我自己的调试器

  • 在操作数堆栈中的电流“物”;
  • 具有帧的视觉表示;
  • 在Java堆(正在运行的程序)中有已声明对象的列表;
  • 有常量池列表等

的问题是我想要一个断点选项设置到位,以我的程序,看看在实际中的应用。

我在互联网上查看调试器的方式,我发现JDPA可能可以帮助我做我的项目。

但是,我不确定它的好处,因为我不需要Java调试器,我真的需要一个Bytecode调试器。

如何在项目中插入字节码断点?我在互联网上看到“0xca被保留为调试器的断点指令,并且不被该语言使用”。这是好方法吗?

回答

2

选项#1: 使用JPDA,您可以使用com.sun.jdi.request.EventRequestManager.createBreakpointRequest()方法,您可以添加一个断点到任何Location。根据Location类的Java文档,它是

目标VM的执行代码内的一个点。

它可能是一个字节码位置或源行位置。

选项2:如果您可以找到字节码所在的方法,则可以在基于JPDA的调试器中放置一个仿真断点,因为您可以从函数的开始处指定字节码的偏移量。