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

Ble*_*eek 4 java eclipse debugging virtual-functions

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

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

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

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

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

我的意思通过虚拟断点...:
也就是说,在Java而不是C#,非私有,非静态,(重写)的方法自然是虚拟的.因此,虚拟调用在这里.

Mar*_*olt 9

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

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

this instanceof EstimationValuePanel
Run Code Online (Sandbox Code Playgroud)

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