我计划构建自己的字节码调试器来查看:
- 操作数堆栈中的电流“对象”;
- 有框架的直观表示;
- 在Java堆(正在运行的程序中)中包含已声明对象的列表;
- 有一个常量池等列表
问题是我想为我的程序设置断点选项并真实地查看应用程序。
我在互联网上查看调试器的方式,我发现JDPA可能可以帮助我完成我的项目。
但是,我不确定它是好事,因为我不想要Java调试器,我真的需要一个字节码调试器。
如何在项目中插入字节码断点?我在互联网上看到“0xca被保留为调试器的断点指令,并且不被语言使用”。这是好方法吗?
答案 0 :(得分:2)
选项#1:
使用JPDA,您可以使用com.sun.jdi.request.EventRequestManager.createBreakpointRequest()
方法向任何Location
添加断点。根据{{1}}类的Java文档,它是
目标VM的执行代码中的一个点。
它可以是字节码位置或源行位置。
选项#2:如果你能找到字节码所在的方法,你可以在基于JPDA的调试器中放置一个人工断点,因为你可以从函数的开头告诉字节码的偏移量。