Eclipse调试断点仅在特定子类的虚拟调用时停止

时间:2013-02-08 17:42:08

标签: java eclipse debugging virtual-method

假设我们有一个带有方法onPoke(..)的抽象类。

abstract class BaseValuePanel{
  void onPoke(int depth){
      //blah, blah, ...
  }
}
  • 类NumberValuePanel,AttributeValuePanel,CategoryValuePanel扩展BaseValuePanel。
  • 其中,DecimalValuePanel类扩展了NumberValuePanel。
  • 其中,类EstimationValuePanel扩展了DecimalValuePanel。
  • 没有任何扩展类会覆盖onPoke(..)方法。

现在,我希望在onPoke(..)上放置一个断点,但只有在调用EstimationValuePanel类的对象时。

因为现在,如果我在onPoke(..)上放置一个断点,调试器将停止数千个实例(因为BaseValuePanel的广泛后代类),并且其中只有一个是由于EstimationValuePanel的调用。

我需要采用的断点设置的设置顺序或策略是什么,以便只允许调试器在EstimationValuePanel调用方法时停止。

我的虚拟断点是什么意思......:
也就是说,在Java而不是C#中,非私有,非静态(可覆盖)方法自然是虚拟的。因此,虚拟调用在这里。

1 个答案:

答案 0 :(得分:9)

当然,您可以覆盖EstimationValuePanel类中的方法,并仅在那里设置断点。

但您也可以使用条件断点:转到方法onPoke()上的断点属性(右键单击 Ctrl +双击)并选择“条件”。 在下面的文本区域中,您可以输入以下条件:

this instanceof EstimationValuePanel

这意味着每次输入方法时都会评估条件。因此,如果遇到性能问题,则应优先覆盖EstimationValuePanel中的方法。