云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

天翼云_凯里网站建设_优惠券

小七 141 0

我在调试jdk源代码时遇到了一个问题,eclipse不能解析函数中参数的值,也看不到参数的名称,但是参数值在变量视图中是可读的:

这是为什么?

事实上,在eclipse中编译java源代码时基础类库,购物返利app,oracle选择删除调试信息,这样即使可以看到源代码,也无法直接调试局部变量。太糟糕了,为了解释这一点,我们可以在本地进行测试。

我有一个LocalVariableTableTest类,用javac编译它,然后把手工编译的类文件移到我的target classes文件夹中:

完成后,我在第10行设置了一个断点,南昌大数据,开始调试,大数据治理平台,这次我们可以发现我们也看不到参数number:

当然我也不能解析number的值,因为JVM完全不知道这意味着什么。

在JVM规范中,爱回扣返现网,我们知道代码结构包含一个名为"LocalVariableTable"的属性,用于描述局部变量。此属性对于调试将源代码中的变量绑定到堆栈中的局部变量非常重要。编译源代码时,这是可选的,我们可以选择是否生成此信息,如果不生成,则会丢失所有局部变量的名称,IDE可能会使用占位符来显示。

现在,我用选项-g编译我的类,大数据和数据库,生成包括"LocalVariableTable"在内的调试信息,然后用"javap-verbose LocalVariableTableTest"查看这个类的字节码:

现在我可以看到LocalVariableTable属性被生成,接下来,再次调试我的类:

这次,变量显示正确。

所以我知道调试jdk源代码时遇到问题的原因。如何修复?核心概念是编译带有调试信息的类。

参考一些在线解决方案,您可以通过以下步骤进行修复: