2

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

4

5 回答 5

1

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

于 2012-08-06T20:24:37.637 回答
0

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

于 2012-08-06T15:26:01.897 回答
0

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

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

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

于 2012-08-06T15:26:32.627 回答
0

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

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

否则请参阅此问题:如何在 Eclipse 中的默认 Java 构造函数上设置断点?

于 2012-08-06T15:32:06.820 回答
0

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

于 2012-08-06T20:24:24.243 回答