有没有办法以编程方式访问方法中定义的变量(任何方法,静态与否)?在调试代码时,IDE如何显示它们?
答案 0 :(得分:1)
您可能希望阅读this它能够很好地解释这一点。你正在寻找的是RemoteStackFrame,这就是事物可以获得目前在范围内的东西
这是一个复杂的主题,但我希望这会有所帮助。
答案 1 :(得分:1)
我不了解其他IDE,但Eclipse使用The Abstract Syntax Tree (AST)
答案 2 :(得分:1)
如果您使用的是eclipse,则可以使用Eclipse提供的JDT API。如果您要创建插件项目,那么这些将可用。
答案 3 :(得分:1)
IDE通常使用调试api的组合,例如[Java Platform Debugger Architecture] [1]提供的调试api,以及它正在调试的代码结构的知识。
读取局部变量的值(即使在调试时),要求使用调试信息编译类文件。在Java中(与许多其他语言一样),必须显式生成调试信息,以便在运行时可以访问它。特别是局部变量以及从字节码到源行号的映射。
[JDI] [2] api相当容易实现一个简单的调试器。但是,如果你正在寻找的是对局部变量的某种反思,那你就不走运了。
我唯一能想到的最后一种情况是使用某种字节码操作库,如[BCEL] [3]或[ASM] [4]并在加载之前修改字节码以允许您访问运行时的变量值。
这肯定会降低代码的速度并且很难实现。最后,如果你退后一步思考它,可能会更容易完全避免这个问题。
(抱歉有错误的链接,但StackOverflow限制链接数量)
[1]:http:// java.sun.com/javase/technologies/core/toolsapis/jpda/ [2]:http:// java.sun.com/javase/6/docs/jdk/api/jpda/jdi/index.html [3]:http:// jakarta.apache.org/bcel/ [4]:http:// asm.ow2.org /