【发布时间】:2018-04-09 02:30:02
【问题描述】:
我对编程并不陌生,但我只是在学习 Java 语言和 Eclipse。我想看看 Java 如何在内部使用 Eclipse 的调试工具 (JDT Debug) 为一些不同的“标准”导入类工作。我的设置(Windows 8.1 上的 Oxygen w/JDK SE8)就单步执行代码而言工作正常,但许多导入的 Class 变量无法放入监视列表或表达式监视器中,我认为这是因为它们没有定义作为“公共”。
举个例子:我想了解 java.math.BigInteger 是如何工作的,所以我编写了一个使用 pow() 方法的快速程序。该程序成功运行,并且在使用调试模式时,我也能够很好地跟踪流程。我似乎不能做的是查看内部“默认”(无访问修饰符)变量的值。以下是 BigInteger.java 中的三个此类变量(第 2225-2231 行):
int powersOfTwo = partToSquare.getLowestSetBit();
long bitsToShift = (long)powersOfTwo * exponent;
if (bitsToShift > Integer.MAX_VALUE) {
reportOverflow();
}
int remainingBits;
关于如何将这些变量公开给 JDT Debug 以供学习的任何建议?
【问题讨论】:
-
您是否正在编译您的项目并使用 JDK 启动它?
-
@nitind - 是的,我想我在上面描述我的设置(JDK SE8)时说过。最初我没有使用 JDK,当我尝试单步进入 println() 时,调试器会抱怨并停止单步执行。所以我切换到 JDK 并根据一些 stackexchange 帖子安装了 src.zip 文件。除了这个问题,一切似乎都正常。
-
您确定将启动配置更改为使用 JDK 吗?
-
@nitind - 我知道您正在尝试提供帮助,但这是我第二次不得不问您是否不清楚我在原始问题中写的内容:“ 的哪一部分我的设置(Windows 8.1 上的氧气 w/JDK SE8)工作正常就单步执行代码”你不明白吗?如果我没有正确配置 JDK,那么单步执行将在第一个 Java 内部方法上崩溃,并且我将无法看到我所询问的变量的名称。对不起,如果我听起来很苛刻,但有时被问到我已经回答了什么会令人沮丧。
-
即使在使用 JRE 启动时,您也可以单步执行您自己的代码,并且您不会在 JDK 中看到 arg0 参数。但是 Stephan 的正确之处在于,局部变量没有被编译和视为字段,并且它们仍然可以被删除或只是内联在最终的类文件中。对于您不自己编译的类,您所要求的可能根本不可能。
标签: java eclipse debugging eclipse-jdt