当我从JDK调试类文件时,Eclipse为什么不显示局部变量值?

时间:2014-04-14 10:30:02

标签: java eclipse debugging .class-file

我想调试.class个文件。例如来自JDK的一些。我下载了源代码并附上了它们。

public File[] listFiles(FilenameFilter paramFilenameFilter)
{
   String[] arrayOfString = list(); // now we here
   if (arrayOfString == null) return null;
   ....
}

然后我输入 F6 并移至下一行。在那之后,我尝试观察arrayOfString的值,但我看到以下内容:

表达式视图:

情况正常吗?有没有办法调试?

更新1:

enter image description here


更新2:

enter image description here

更新3:

enter image description here

7 个答案:

答案 0 :(得分:17)

问题是来自JDK的源/类文件是在没有调试信息的情况下编译的,因此eclipse无法检查这些变量。有关详细信息,请参阅this answer

要解决您的问题,您需要获得不同的rt.jar或compile it yourself

答案 1 :(得分:0)

您可以在“变量”窗口中看到所有变量值。表达式仅在具有范围时显示值,但有时它们的行为方式与我们不同。

所以我的建议是你应该使用“Variables”窗口查看所有变量及其值。

答案 2 :(得分:0)

我建议在选定的表达式ctrl上使用shift + i + inspect

其他选项是将Display视图添加到您的环境中,您可以在其中键入自己的表达式并检查它们,就好像它们放在代码中一样。

答案 3 :(得分:0)

在“表达式”视图中,您可以输入任何表达式,Eclipse将尝试在当前执行上下文中对其进行评估。这意味着如果您的表达式在当前上下文中无效(例如,您尝试评估object.myMethod()并且object为null),则会出现您显示的错误。

答案 4 :(得分:0)

当这种情况开始发生在我身上时,其中一些解决方案并未解决,这并不是我开始体验的唯一问题。

我想提出另一种解决方案(包括我在内)。尽可能多地迁移到Android Studio,并开始熟悉新的IDE。如果要为公司开发,请尝试让它在你的工作时间内工作,留出时间来迁移这些,因为有些会很容易,而且有些人可能不会使用NDK组件。

但是,由于Eclipse不再受到支持而且从Google专注于Android Studio,我们(当然只在我看来)开始学习新环境是最好的。它现在处于一个相当稳定的地步,它超越了通过Eclipse编程的常规Android应用程序开发方面。

答案 5 :(得分:-1)

是的,您可以通过使用鼠标光标选择表达式,从菜单中选择inspect选项(在监视下方)。确保您已正确选择整个表达式。

如果以下是代码

if(object.value())
{
// some code
}

因此请仅选择object.value(),然后右键单击并选择inpsect

另一种选择是查看variable标签中的变量值

答案 6 :(得分:-1)

采取Windows - >偏好 - > Java - >编译器,从Eclipse菜单栏和验证复选框中选中“将变量属性添加到生成的类文件(由调试器使用)”。