【问题标题】:Eclipse JDT - How to set a breakpoint on an invisible default constructor?Eclipse JDT - 如何在不可见的默认构造函数上设置断点?
【发布时间】:2012-08-06 15:03:50
【问题描述】:

如何在 eclipse Juno (4.2) 中将方法入口断点设置为不可编辑(库)类的合成默认构造函数?

例如

public class Foo {}  // can't change that code
//    (...)
Foo foo = new Foo()   // now it should stop
Foo bar = new Foo()  // stop again

一般情况下可以吗?

为了进一步澄清这一点,我想停止每次在运行时创建 Foo 的实例,不是在加载类后。在复杂的设置中,我必须区分是 foo 还是 bar 创建实例。

它基本上应该与不可见的合成构造函数上的断点相同,实际上不会将该构造函数添加到代码中,例如

public class Foo {
  public Foo(); //break here
}

已解决

对于 .class 文件,默认构造函数在大纲视图中列出。可以通过右键添加方法入口断点。

【问题讨论】:

  • cmets from #eclipse - MisterD: "断点是通过类的限定名称和成员签名来识别的。如果是这样,您可以创建一个具有相同属性的类和成员,并且断点将适用于源类和编译类,例如获取源类断点,将其导出并导入到该类是库类的项目中,可能会起作用”
  • 另一种选择可能是为 java.lang.Object 的构造函数设置断点,条件为“this.getName().equals("Foo")”

标签: java eclipse debugging breakpoints eclipse-jdt


【解决方案1】:

对于 .class 文件,您可以像往常一样从大纲视图切换方法入口断点。对于源文件,您实际上必须添加这样的构造函数来在其中设置断点。大纲视图向您显示文件中的内容。

【讨论】:

    【解决方案2】:

    您可以在“public class Foo”行设置断点。如果你平时在编辑器左侧的标记栏中双击设置断点,那么双击类声明行即可。

    【讨论】:

    • 这是一个类加载断点,它会被触发一次,即使只是访问一个静态成员。我改写了我的问题以使其更容易区分。
    【解决方案3】:

    我可能遗漏了一些东西,但您可以简单地在行 Foo bar = new Foo(); 上设置一个断点,当调试器停在那里时,进入代码(所以按 F5 键)。

    如果Foo 扩展了任何实际实现默认构造函数的类,那么您的调试器现在将位于层次结构中具有默认构造函数的第一个super 类。

    如果 Foo 没有扩展任何类,或者这些类都没有默认构造函数,那么您最终只会实例化 Object。

    【讨论】:

    • 是的,我可以在 'foo = new Foo()' 处停下来。但是,如果您不确定是谁在运行时创建了这个特定的实例,那不是一个选择。
    【解决方案4】:

    如果您有任何带有初始化程序的成员变量,那么您可以在它们上放置一个断点。例如:

    class MyClass {
      private int i = 0; // this line can have a breakpoint in Eclipse
    }
    

    其他看这个问题:How to set a breakpoint on a default Java constructor in Eclipse?

    【讨论】:

    • 我不想在加载类时中断,但每次创建实例时。我必须扩展我的示例... ;)
    • 编辑了我的答案。刚刚测试过,如果类有初始化器,上面发布的解决方案应该可以工作。否则,请检查其他问题是否有您可以尝试的技巧。
    【解决方案5】:

    "#eclipse" 帮助解决了这个问题: 默认构造函数显示在大纲视图中 IF 它是一个 .class 文件,而不是 .java 文件。那么设置方法入口断点就可以了。

    【讨论】:

      猜你喜欢
      • 2010-12-24
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 2018-09-01
      • 1970-01-01
      • 2019-08-07
      相关资源
      最近更新 更多