Eclipse-디버거가 중단 점에서 중지되지 않음


96

JUnit 문제를 해결하려고합니다. 소스 코드에서는 1) 정적 멤버가 초기화되는 행 2) 테스트 케이스 중 하나의 첫 번째 행의 두 위치에 중단 점을 설정했습니다.

디버거는 정적 필드 초기화 라인에서 중지됩니다. 그러나 그것은 테스트 케이스에서 멈추지 않습니다. 테스트 케이스에서 중단 점을 어디에 설정하더라도 디버거는 거기서 멈추지 않습니다. 내가 추가 한 로그 메시지가 로그에 나타나는 것을 볼 수 있으므로 테스트 케이스가 실행되었는지 확인합니다.

어떤 도움이라도 대단히 감사하겠습니다.

Eclipse Galileo 및 JUnit4 런처를 사용하고 있습니다.


1
.class 파일에 디버그 정보를 생성하기 위해 -g 옵션을 설정하여 코드를 컴파일 했습니까? 물론 필요합니다.
duffymo

예, -g 옵션으로 컴파일됩니다.
Roy

사용중인 JUnit 및 JRE 버전에 대한 정보도 추가 할 수 있습니까? 이 맥락에서 도움이된다고 생각합니다.
Vineet Reynolds

그런데 사용중인 JDK가 더 중요합니다 (이를 유발할 수있는 일부 엉망인 JDK가 있습니다). JUnit 버전에 대한 쿼리를 무시하십시오.
Vineet Reynolds

포함시켜야해서 죄송합니다. JDK 1.6 업데이 트 (14)
로이

답변:


39

이는 JDK 6 업데이트 15의 릴리스 노트에 표시된대로 JDK 6 업데이트 14 의 버그 중 하나와 관련이있을 수 있습니다 .

이것이 실제로 문제로 판명되면 더 높은 버전의 JDK로 이동해야합니다 ( 6u16, 6u18 및 7b1에 대한 수정 사항이 릴리스되었으므로 보장되지는 않습니다 ). 가장 좋은 방법은 -XX : + UseParallelGC 플래그를 사용하는 것입니다. 첫 번째 GC를 지연시키기 위해 최소 및 최대 힙 크기의 크기를 늘리면 일시적으로 완화됩니다.

그건 그렇고, Eclipse에서이 버그 보고서를 사용 하여 다른 사람들이 어떻게 지 냈는지 추적하십시오.


1
JDK 1.6 업데이트 16으로 업그레이드했습니다. 이제 설정 한 모든 중단 점에서 중지됩니다. 도와 주셔서 정말로 고맙습니다.
로이

천만에요. u16은 u15의 릴리스 노트에도 불구하고 이것이 충분히 수정 된 릴리스 인 것 같습니다.
Vineet Reynolds

감사합니다 @Vineet-나는 이것 위에 내 머리카락을 꺼내고 있었다 :-)
Jim Garrison

@VineetReynolds : Jboss 및 Java ee 6과 관련된 귀중한 답변을 확인했습니다.이 문제를 해결하는 데 도움을 줄 수 있습니까? stackoverflow.com/questions/28954323/…
brain storm

96

수정은 모든 중단 점 실행 / 건너 뛰기를 클릭하는 것만 큼 간단 할 수 있습니다. 나를 위해 일했습니다.


3
내가 어떻게 든 클릭 한 것을 발견하는 데 3 일이 걸렸습니다
henry

1
덕분에 ... 있어야합니다 클릭 한 것을 도구 모음 아이콘을 실수로 어떻게 든 - P
kenyee

4
감사합니다 ... 그 클릭있어 아무 생각이 없습니다
njfife

1
정말 고맙습니다. 다른 사용자의 경우이 상황에서 중단 점을 만들면 슬래시로 표시됩니다.
saurabheights

나도 마찬가지였다. 클릭 한 적 없어 ... !! 버전 : 화성 릴리스 (4.5.0) 빌드 ID : 20150621-1200
Beezer

52

상황에 따라 실행> 디버그 구성에서 '기본에서 중지'가 선택되어 있는지 확인합니다.


1
게시하기 전에 이전 응답을 읽으십시오. 문제는 그들의 jvm 버전 ..이었고 3 년 전에 해결되었습니다. 귀하의 응답이 이전 답변에서 이미 다루지 않은 중요한 내용에 기여하지 않는 한 오래된 스레드를 되 살리지 않는 것이 가장 좋습니다.

6
감사. @Answerer 귀하의 답변이 내 문제를 해결했습니다. "Stop in main"이 설정되지 않은 것이 이상합니다.
유 셴

25
그의 대답은 이미 :) 이전 답변에 포함되지 않은 중요한 뭔가 기여했던 것으로 보인다
scubbo

이것은 Java 애플리케이션에 대한 옵션이지만 Android 애플리케이션에는 해당되지 않습니다.
Noumenon 2013-07-13

21

일반적으로 이런 일이 발생하면 (드물지만 그렇습니다) 실행되는 코드가 편집기의 코드와 다르다는 것을 의미합니다. Eclipse의 경우 빌드 클래스와 편집기의 코드가 동기화되지 않는 경우가 있습니다. 그런 일이 발생하면 모든 종류의 이상한 디버거 동작 (빈 줄 디버깅, 코드 줄 건너 뛰기 등)이 발생합니다.

Eclipse를 다시 시작하고 모든 프로젝트를 정리하고 모든 것을 다시 빌드하면 일반적으로 문제가 해결됩니다. 나는 또한 그렇게하는 경향이있는 Maven 플러그인 (이전 버전 ... 당분간은 없었습니다)도있었습니다.

그렇지 않으면 버그 일 수도 있고 Vineet이 말한 것일 수도 있습니다.

도움이 되었기를 바랍니다


예, 당신이 말한 것은 코드를 자동으로 재 컴파일하지 않는 IDE에서 더 많이 발생합니다. Oracle JDeveloper (개인 경험에서)와 그보다 적은 범위 (Netbeans)가 원하는 것으로 나타났습니다.
Vineet Reynolds

1
좋은 조언. 충분히 말하지 않았습니다. 때때로 우리는 문제를 지나치게 생각하고 단지 시스템이 동기화되지 않은 것입니다. 간단한 문제를 해결하기 위해 컴퓨터를 재부팅하는 것과 같습니다.
Xonatron

고마워, 그게 제 경우에 문제였습니다. 어리석은 것처럼 들리지만 빌드 후 간단한 청소 및 F5가 작업을 수행했습니다.
jfajunior

20

Eclipse 도구 모음에서 실수로 모든 중단 점을 건너 뛰었을 수 있습니다. 이 문제를 해결하려면 Eclipse-> 실행-> 모든 중단 점 건너 뛰기로 이동하십시오.


1
Arggh, 이것에 대한 바로 가기도 있습니다. 아마도 우연히 메뉴 항목을 확인하지 않았을 것입니다. 그러나 Ctrl + Alt + B를 누르는 것 같습니다. 어쨌든 고마워.
Patru

3

Project-> Clean은 JRE 8에서 나를 위해 작동하는 것처럼 보였습니다.


2

디버거가 원격으로 작업하려면 자바 .class 파일이 디버깅 정보와 함께 준수되어야합니다. " -g : none "옵션이 컴파일러에 전달 된 경우 클래스 파일에 필요한 정보가 없으므로 디버거는 원격에서 해당 클래스와 소스 코드의 중단 점을 일치시킬 수 없습니다. 한편, jars / class 파일이 난독 화 된 경우 디버그 정보도 포함되지 않습니다. 귀하의 답변에 따르면 이것은 귀하의 경우가 아닐 수 있지만이 정보는 동일한 문제에 직면 한 다른 사람들에게 유용 할 수 있습니다.


2

제 경우 문제는 디버그 관점에서 디버그보기를 열지 않았기 때문에 다음과 같습니다.

1-디버그 퍼스펙티브가 열려 있는지 확인하십시오.

이클립스 디버거가 작동하지 않음 1

2-디버그보기가 열려 있는지 확인합니다.

이클립스 디버거가 작동하지 않음 2



1

JDK7의 경우 실행-> 디버그 구성에서 "디버깅시 테스트 실행 후 JUnit 실행 유지"를 선택하십시오.


1

한 번은 "실행> 자동 빌드"를 선택 취소하고 다시 확인하는 것을 잊었을 때 발생했습니다.


1

상단에 패키지를 신고했는지 확인하십시오. 내 그루비 코드에서 이것은 중단 점에서 중지됩니다.

package Pkg1

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

이것은 중단 점에서 멈추지 않습니다.

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

많은 어려움을 겪은 후에 이것은 내 문제를 해결합니다. 감사합니다 +1
Federico Piazza

0

중단 점을 제거하려면 다음을 수행하십시오 .

  1. 클래스를 junit 테스트로 디버그
  2. 디버거가 중지되면 "변수"및 "식"옆에있는 "중단 점"탭을 클릭합니다.
  3. 중단 점 탭의 오른쪽 상단에서 두 개의 'X'가있는 버튼을 클릭합니다.
  4. 테스트를 중지하고 중단 점을 교체 한 다음 디버거를 다시 실행하십시오.

0

또한 다른 줄의 중단 점이 작동하는지 확인하십시오. 디버거의 버그 일 수 있습니다. 나는 그 코드를 작동하지 않았다 다음 줄에 있던 부울 할당에 중단 점을 넣어 이클립스 디버거에 문제가 있었 내가 여기에이보고를 하지만, 이전 또는 다음 행에 퍼팅했다.


0

아무것도 작동하지 않으면

  1. 해당 원격 / 로컬 디버그 구성을 제거하고 새 구성을 만듭니다.
  2. 디버그 구성에 소스를 추가하십시오.

0

또 다른 가능한 문제는 디버거 포트가 방화벽에 의해 차단 될 수 있다는 것입니다. 예를 들어, 나는 mule anypoint studio (v 5.4.3)를 사용하고있었습니다. 기본 디버거 포트는 6666입니다. 흐름이 ​​실행될 때 중단 점에서 중지되지 않습니다. 포트를 다른 포트 (예 : 8099)로 변경했을 때 제대로 작동했습니다.


0

로 이동 Right click->Debug Configuration하고 너무 많은 디버그 인스턴스가 생성되었는지 확인합니다. 구성에서 여러 디버그 인스턴스를 삭제하고 새로 디버깅을 시작하면 내 문제가 해결되었습니다.


0

Eclipse를 사용하는 경우

"Package Explorer"에서 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭합니다.

Goto Source-> Clean up and choose your project.

이것은 모든 엉망을 정리하고 중단 점은 이제 작동합니다.



0

제 경우에는 동일한 작업 공간에 여러 프로젝트가있었습니다. 디버깅하려는 Java 파일이 동일한 패키지가있는 둘 이상의 프로젝트에 있습니다.

다른 프로젝트가 필요하지 않았으므로 관련없는 프로젝트를 닫거나 관련없는 프로젝트에서 파일을 제거하면됩니다.


0

Vineet Reynolds 답변에 대한 추가 의견이 하나 있습니다.

내가 설정 한 것을 발견 -XX:+UseParallelGC에서eclipse.ini

다음과 같이 가상 머신 (vm) 인수를 설정했습니다.

-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=256M
-XX:MaxPermSize=512M

문제를 해결했습니다.


-2

이것이 나를 위해 작동하는 것입니다.

다음 과 같이 PHP 서버 구성 에 로컬 서버 주소를 입력해야 했습니다.

여기에 이미지 설명 입력

참고 : 해당 주소는 Apache .conf 파일 에서 구성한 주소 입니다.

참고 : 작동하는 유일한 중단 점은 '첫 번째 줄에서 중단'이었습니다. 그 이후에는 중단 점이 작동하지 않았습니다.

참고 : php.ini 파일 에서 xdebug 속성을 확인 하고 필요하지 않다고 생각하는 항목을 제거하십시오.


1
나는이 (JUnit을 자바 디버깅에 대한) 질문에 대답하는 방법을 참조 실패
Newtopian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.