Eclipse JDT - 如何在不可见的默认构造函数上设置断点?

时间:2012-08-06 15:03:50

标签: java eclipse debugging breakpoints eclipse-jdt

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

e.g。

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 文件,大纲视图中会列出默认构造函数。右键单击可以添加方法入口断点。

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以在“public class Foo”行上设置断点。如果您通常双击以在编辑器左侧的标记栏中设置断点,则双击类声明行。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

如果你有任何带有初始值设定项的成员变量,那么你可以在它们上面加一个断点。例如:

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?

答案 4 :(得分:0)

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