seb*_*_oe 9 java eclipse debugging openjdk
对于一个研究项目,我正在使用Eclipse开发OpenJDK源代码.出于调试目的,集成调试器的"表达式"和"显示"视图非常有用.当单步执行javac编译器工具的代码时,表达式视图在某些类上失败.然后,即使是最简单的表达式也会<error(s)_during_the_evaluation>在其值列中获得.然后详细的错误消息是:
Evaluations must contain either an expression or a block of well-formed statements
Run Code Online (Sandbox Code Playgroud)
我很确定,我已经输入了有效的表达式,作为调用方法的简单切换(一个堆栈帧更高)使视图工作.
我上传了两个截图,两个让问题更加清晰:
非工人阶级JavacParser:

工人阶级EndPosParser:

有没有人遇到类似的问题或知道原因是什么或如何解决它?在两个显示的视图之间切换时,除了将一个堆栈帧更高之外,我什么都不做.预计两种表达都将在两种情况下进行评估.据我所知,所显示的失败行为只发生在JavacParser类中.
谢谢!
据我所知,表达式是在当前(最顶层)堆栈帧的上下文中计算的。
看起来您的第一个屏幕截图是在EndPosParser构造对象 ( ) 时拍摄的。由于您的对象尚不存在,因此this无法评估。this在超级调用链到达 之前,无法评估对 的引用Object。
不知道为什么1+2不能评价。我最好的猜测是:Eclipse 将构造函数识别为非静态方法,并尝试1+2在非静态上下文中进行计算。但这又失败了,因为this还不存在。
编辑:这是一个该死的老问题,我只是想回答......