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

Java 当我从JDK调试类文件时,为什么Eclipse不显示局部变量值?,java,eclipse,debugging,.class-file,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的值,但我看到以下

我想调试.class文件。例如,来自JDK的一些。我下载了资料并附上了它们

public File[] listFiles(FilenameFilter paramFilenameFilter)
{
   String[] arrayOfString = list(); // now we here
   if (arrayOfString == null) return null;
   ....
}
然后我键入F6并移动到下一行。之后,我尝试观察arrayOfString的值,但我看到以下内容:

表达式视图:

这是正常情况吗?有没有调试的方法

更新1:

更新2:

更新3:


您可以在变量窗口中看到所有变量值。表达式只有在具有作用域时才会显示值,但有时它们的行为方式与我们希望的不同

因此,我的建议是,您应该使用“变量”窗口查看所有变量及其值。

是的,您可以使用手表下方菜单中的“检查”选项,使用鼠标光标选择表达式。确保已正确选择整个表达式

好像下面是代码

if(object.value())
{
// some code
}
因此,只选择object.value,然后右键单击并选择InSect

另一个选项是在变量选项卡中查看可用的变量值

我建议对选中的表达式使用ctrl+shift+I,该表达式为inspect


另外一个选项是将“显示”视图添加到您的环境中,您可以在其中键入自己的表达式并检查这些表达式,就像它们放在代码中一样。

在“表达式”视图中,您可以输入任何表达式,Eclipse将尝试在当前执行上下文中对其求值。这意味着,如果您的表达式在当前上下文中无效,例如,您尝试计算object.myMethod,而object为null,您将得到显示的错误。

问题是,JDK中的源/类文件在编译时没有调试信息,因此eclipse无法检查这些变量。有关更多信息,请参阅


要解决您的问题,您需要获得一个不同的rt.jar或

使用Windows->Prefrences->Java->Complier,打开Eclipse菜单栏,验证是否选中了“将变量属性添加到调试器使用的生成类文件”复选框。

当我开始遇到这种情况时,这些解决方案并没有解决这个问题,这也不是我开始体验的唯一问题

我想为自己提出另一个解决方案。尽可能多地迁移到Android Studio,并开始熟悉新的IDE。如果是为一家公司开发的,试着在你的工作时间里留出时间来迁移这些东西,因为有些东西会很容易,而有些带有NDK组件的东西可能不会


但是,随着Eclipse被取消支持,以及谷歌对Android Studio的关注,当然,我认为只有开始学习新环境对我们来说才是最好的。它现在处于一个非常稳定的点,它超过了Eclipse上编程的常用Android应用程序开发端。

与图片上的结果相同,但在另一个位置,只需用鼠标选择“arrayOfString”变量,然后右键单击并输入Sect即可。如果要计算“arrayOfString==null”是否为null,请选择该表达式并查看检查如果要选择整个If块,请选择“arrayOfString==null”,然后说“检查”。这将显示真值或假值。因此,你可以假设它是否进入内部。如果不是太长,你可以发布整个类吗?我没有在变量中看到此变量。据我所知,变量不显示局部变量,仅显示类变量/字段。我尝试过。它没有帮助列表方法在做什么?我想到的是,您的源代码在编译类ie中不是同一个ass。它在第1090行中不同,或者可能变量的名称不同。实际上,您可以看到,没有计算表达式OP没有声明他们在Eclipse中编译了JDK源代码,我认为假设他们有这种想法是没有道理的。