2013-02-08 2 views
4

메소드 onPoke (..)를 사용하여 추상 클래스가 있다고 가정 해 보겠습니다.특정 서브 클래스의 가상 호출에서만 중지되는 Eclipse 디버그 중단 점

abstract class BaseValuePanel{ 
    void onPoke(int depth){ 
     //blah, blah, ... 
    } 
} 
  • 클래스 NumberValuePanel, AttributeValuePanel는 BaseValuePanel 연장 CategoryValuePanel.
  • 그 중에서도 DecimalValuePanel 클래스는 NumberValuePanel을 확장합니다.
  • 그 중에서도 EstimationValuePanel 클래스는 DecimalValuePanel을 확장합니다.
  • 확장 클래스가 onPoke (..) 메소드를 대체하지 않습니다.

이제는 onPoke (..)에 중단 점을 배치하려고하지만 EstimationValuePanel 클래스의 객체를 호출 할 때만합니다.

지금 당장 onPoke (..)에 중단 점을 배치하면 디버거가 (BaseValuePanel의 광범위한 자손 클래스로 인해) 수천 개의 인스턴스를 중지하고 그 중 하나만 EstimationValuePanel을 호출했기 때문입니다.

디버거가 EstimationValuePanel에서 호출되었을 때만 디버거를 중지 할 수 있도록 설정해야하는 브레이크 포인트 설정의 전략 또는 전략은 무엇입니까?

가상 중단 점 의미 :
즉, Java에서 C#과는 달리 비공개, 비 정적 (대체 가능한) 메서드는 자연스럽게 가상입니다. 따라서 여기에서 가상 호출.

+0

Eclipse에서 수행 할 수없는 경우 다른 사람이 대신 할 수있는 IDE를 제안 할 수 있습니까? –

+0

Pls는 EstimationValuePanel 클래스에서 onPoke 호출을 검색하고 그 앞에있는 명령문에 중단 점을 넣으라고 제안하지 않습니다. –

답변

9

물론 EstimationValuePanel 클래스의 메서드를 재정의하고 그곳에서만 중단 점을 설정할 수 있습니다.

그러나 조건부 중단 점을 사용할 수도 있습니다. 메서드 onPoke()에서 중단 점의 속성으로 이동합니다 (또는 마우스 오른쪽 단추로 클릭하고 Ctrl + 두 번 클릭). "조건부"를 선택합니다. 다음과 같은 조건을 입력 할 수 있습니다 아래의 텍스트 영역에서 는 :

this instanceof EstimationValuePanel 

이 조건이 매번 평가 방법 입력을 의미합니다. 따라서 성능 문제가 발생하면 EstimationValuePanel에서 메서드를 재정의하는 것이 좋습니다.