2011-01-13 2 views

답변

5

아니요. 그러나 조건부 중단 점을 사용할 수 있습니다. 나는 다른 중단 점을 치는 것이 국가의 변화를 의미한다고 생각합니다. 당신이 다른 브레이크 포인트가 충돌 될 때의 상태를 알고있는 경우

그래서

, Right click the breakpoint -> Breakpoint properties -> check "conditional"

0

후 새 중단 점에 그 조건을 추가 할 수 있습니다.

0

조건부 중단 점이 한 가지 가능성이 있으며 지정된 횟수만큼 히트 한 후에 만 ​​중단 점이 트리거되도록 히트 횟수를 설정할 수도 있습니다.

하지만 아니요, 요청하는 것을 수행 할 방법이 없습니다.

0

또 다른 아이디어는 중단 점을 비활성화하고 다른 중단 점에 도달하면 활성화하는 것입니다.

+0

네, 지금 당장하는 일 이죠.하지만 그 일을 계속하는 것은 고통입니다. – Kyle

6

이 큰 해킹이지만 기능적인 해결 방법입니다 :

를 호출 '트리거'위치 브레이크 포인트 1 목표 위치 브레이크 포인트 2. 우리는 실행하는 경우 및 전용-경우에 발생하는 2 브레이크 포인트합니다 중단 점 1을 통과했습니다.

각각에 조건부 중단 점을 설정하십시오.

중단 점 1의 경우 조건을 System.setProperty("breaknow", "breaknow") == ""으로 설정하십시오. 이 조건은 사실이 아니지만 중단 점 2에서 읽을 수있는 시스템 속성을 설정합니다.

중단 점 2의 경우 조건을 System.clearProperty("breaknow") != null으로 설정합니다. 시스템 속성이 설정되면이 조건이 실행되고 필요없는 경우 반복 할 수 있습니다.

내가 말했듯이, 그것은 해킹이지만 작동하는 것 같습니다. 나는 네이티브 기능 (https://bugs.eclipse.org/bugs/show_bug.cgi?id=390590)으로 연결 또는 연결 중단 점을 구현하는 Eclipse 향상 요청을 제출했습니다. 불행히도, 나는 그것을 직접 구현할 대역폭이 없지만 언젠가는 더 깨끗한 솔루션에 대한 지원을받을 것입니다.

(이 트릭뿐만 아니라 모든 조건부 중단 점에 적용됨) : 조건부 중단 점을 설정하면 JIT가 관심있는 메소드를 컴파일하지 못하게되어 해석 모드로 실행됩니다. 또는 아마도 첫 번째 C1 JIT 단계를 허용하지만 두 번째 단계 C2 컴파일러가 최적화되지 않도록 할 수 있습니까?

어느 경우 든 디버깅하는 메서드가 조건부 중단 점을 사용하여 상당히 느리게 실행된다는 것을 알고 있어야합니다. 이것은 대개 문제가 아니지만 내부 루프를 매우 빈틈없이 디버깅 할 때 if (x) { // Do somthing useless and set a breakpoint here} 메서드로 폴백하는 것이 좋습니다.

관련 문제