这是测试代码:
import java.util.HashMap;
import java.util.Map;
public class Tester {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("ABC", 1); //breakpoint here
}
}
通常在调试模式下,当鼠标悬停在某个变量之上时,会显示该值。但似乎HashMap
中的大多数变量在鼠标悬停时都没有显示其值。
在put
的{{1}}方法中,HashMap
的大多数成员都会收到评估错误:
为什么有这么多map
?是什么导致了这些错误?
答案 0 :(得分:1)
除此之外的原因是Eclipse调试器使用的字节码(.class文件)不包含有关方法参数名称的任何信息。这就是默认情况下编译JDK的方式。
Eclipse调试器实现了方法参数的解决方法,将它们命名为“arg0”,“arg1”等,从而使您能够在“变量”视图中检查它们。不幸的是,我认为本地方法变量没有这样的解决方法......
StackOverflow中的其他一些票证建议根据JDK的源代码重建JRE,例如:debugging not able to inspect the variables。