为什么Eclipse表达式视图在某些类上失败?

时间:2013-06-25 18:26:35

标签: 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

我很确定,我已经输入了有效的表达式,因为简单地切换到调用方法(一个堆栈帧更高)使视图工作。

我上传了两个截图,两个让问题更加清晰:

非工作班JavacParser Not-working class

工人阶级EndPosParser Working class

有没有人遇到类似问题或者知道原因是什么或如何解决?在两个显示的视图之间切换时,除了将一个堆栈帧更高之外,我什么都不做。预计两种表达都将在两种情况下进行评估。据我所知,所显示的失败行为仅发生在JavacParser类中。

谢谢!

1 个答案:

答案 0 :(得分:0)

据我所知,表达式是在当前(最顶层)堆栈帧的上下文中进行评估的。

似乎是在构建对象(EndPosParser)时拍摄的第一个屏幕截图。由于您的对象尚不存在,因此无法评估this。在超级调用链达到this之前,无法评估对Object的引用。

我不确定无法评估1+2的原因。我最好的猜测是: Eclipse将构造函数识别为非静态方法,并尝试在非静态上下文中评估1+2。但这再次失败,因为this尚不存在。

编辑:这是我刚刚试图回答的一个该死的老问题......