【问题标题】:Debugging Java in Eclipse stops without a breakpoint在 Eclipse 中调试 Java 在没有断点的情况下停止
【发布时间】:2018-11-15 22:49:36
【问题描述】:

我想调试由两个最简单的类组成的非常简单的代码。

package test.pack;

public class TestClass {

    public static void main(String[] args) {
        TestClassTwo tc2 = new TestClassTwo();
    }

}

================================================ ===

package test.pack;

public class TestClassTwo {

    public TestClassTwo() {
        System.out.println(this);
    }

}

================================================ ===

所以,当我在类 TestClassTwo 的初始化断点上切换并通过 [F11] 和 [F5] 运行调试时,我应该进入 TestClassTwo 的构造函数。 但是这个断点不是在我没有设置任何断点的地方命中。 It is shown on this pic

我在 [Eclipse IDE for Java EE Developers] 和 [Eclipse IDE for Java Developers] 上尝试了这个,我还从 Oracle 官方网站下载并安装了最新版本的 JDK。

但是有一个限制是我应该根据业务方面的技术任务在我的项目中使用Java 1.7版本。

我试图使用该主题的解决方案 Debug hit without breakpoint - Eclipse,但没用。

接下来,我附上可以帮助解决我的问题的屏幕截图。

Java library in settings of project

Installed JRE in preferences of Eclipse

Java version in cmd

System variables in Environment variables

System variables in Environment variables also

Windows version

【问题讨论】:

  • F11 映射到什么? F5?
  • 按 F5 之前的样子?

标签: java eclipse ide java-7 breakpoints


【解决方案1】:

你试图输出 this,这意味着对这个对象的引用,但是试图从构造函数中调用它,它创建了这个对象。尝试在其他方法中在构造函数之后调用此代码。

调试可能因为空引用异常而崩溃,导致调用堆栈出错,这就是程序立即崩溃的原因。

【讨论】:

    【解决方案2】:

    首先,到目前为止,您所做的一切都是正确的。

    如果您想这样称呼它,“错误”会在您点击F5 时出现。现在这个命令被称为step into,这意味着它将在下一个更深的堆栈层继续执行。

    根据您假设这将是TestClassTwo 的构造函数的代码,但在java 可以调用构造函数之前,它首先必须初始化类本身,而这正是图片中Debug View 所指示的。

    附带问题:您是否多次按下F5 以深入了解ClassLoader.loadClass()?


    对于当前执行你可以选择Debug View的倒数第二行,即

    Launcher$AppClassLoader(ClassLoader).loadClass(String) line: not available
    

    然后点击F7。这将 step out 的相应方法在前一个堆栈层上继续执行,随后应调用 TestClassTwo 的构造函数。


    为了将来的调试,您可能需要熟悉Step Filtering。步骤过滤器允许您从调试中排除某些代码部分。它们将被执行,但 eclipse 会自动“跳过”它们。

    在对应的首选项页面Java > Debug > Step Filtering,eclipse方便地提供了单独启用和禁用java.lang.ClassLoader的步骤过滤的选项。

    【讨论】:

      猜你喜欢
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 2012-02-16
      • 2011-10-31
      • 2022-01-19
      • 1970-01-01
      相关资源
      最近更新 更多