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

问题描述:

假设我们有一个带onPoke(..)方法的抽象类。Eclipse调试断点只在特定子类的虚拟调用中停止

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#相反,非私有的,非静态的(可重写的)方法自然是虚拟的。因此,在这里虚拟调用。

+0

如果Eclipse不能这样做,有人可以建议一个替代IDE可以做到吗? – 2013-02-08 17:46:05

+0

请不要建议我在类EstimationValuePanel上搜索onPoke调用,并在它之前的语句上放置一个断点。 – 2013-02-08 17:51:37

当然,您可以重写EstimationValuePanel类中的方法,并仅在此处设置断点。

但你也可以使用条件断点:去的方法onPoke()断点的属性(右键单击按Ctrl +双击),然后选择“条件”。 在文本区域下面你可以输入以下条件:

this instanceof EstimationValuePanel 

这意味着条件评估每次输入的方法。因此,如果您遇到性能问题,您应该优先重写EstimationValuePanel中的方法。