Eclipse에서 디버깅하는 동안 전체 문자열보기


166

Java 코드를 디버깅하는 동안 "Variables"및 "Expressions"보기의 문자열은 특정 길이까지만 표시되며 그 후에 Eclipse는 "..."를 표시합니다.

전체 문자열을 검사하는 방법이 있습니까? (이것은 모든 곳에서 디버깅을 위해 로깅 문장을 추가하는 어려움을 완화시킵니다)


이 행동을 어디에서보고 있습니까? 디버거의 어느 부분?
skaffman

부수적으로, 이것은 당신을 위해 작동하지 않을 수 있기 때문에 잘못된 이름 일 수 있지만, java.util.logging 또는 log4j와 같은 디버깅 라이브러리를 사용하면 디버그 레벨을 다른 디버깅 수준으로 쉽게 바꿀 수 있습니다 출력 또는 로그 파일에 디버그 창에서 문자열을 거르는 것이 쉽지 않을 수도 있습니다. 그냥 생각 =)
corsiKa

답변:


225

변수보기에서 세부 사항 분할 창 (문자열 컨텐츠가 표시되는 섹션)을 마우스 오른쪽 단추로 클릭하고 "최대 길이 ..."팝업 메뉴를 선택할 수 있습니다. 동일한 길이가 표현식 관리자 팝업과 다른 장소에 적용됩니다.

여기에 이미지 설명을 입력하십시오


17
선택한 솔루션보다 훨씬 나은 솔루션입니다. 감사합니다!
Colin

13
세부 정보 창은 문자열 내용이 표시되는 섹션입니다.
Bnrdo

1
이클립스 케플러에서 어떻게해야합니까? Pls help
어리석은

1
좋은 소식은이 변경 사항이 변수 위로 마우스를 가져 가서 "검사"창 또는 "표현식"보기에서 검사하고 "디스플레이"보기에 값을 표시 할 때 표시되는 길이에 영향을주는 것 같습니다.
Steve Chambers

1
올바른 솔루션을 업데이트했습니다 (이전에 허용 된 솔루션은 실제로 이전 Eclipse 버전의 유일한 솔루션이었습니다).
ragebiswas은

134

변수 보기 에서 변수 를 마우스 오른쪽 단추로 클릭하고 값 변경을 선택 하십시오 . 변수가 크면 몇 분 기다려야합니다 (이 경우 Eclipse는 명령에 응답하지 않습니다). 그러나 결국 Eclipse는 변수를 완전히 표시합니다.


2
나만 볼 수 "data:image/bitmap;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQE... (length: 22869)"있습니다. "최대 길이"옵션이 작동하지 않고 "값 변경"도 설정하십시오.
falko

@falko "Max Length"가 작동하지 않았습니다. "값 변경"이 정상입니다 (가변 길이에 따라 몇 초 기다린 후).
Umberto

적어도 내 시스템에서는 "최대 길이"를 늘리는 것보다 속도 가 상당히 느립니다 (다른 답변 참조).
sleske

일식은 당신의 아이디어에 대해 아주 행복하지 않습니다. 나는 이것을 시도했고 지금 일식의 응답을 위해 30 분 이후 기다립니다. Buuut : 작동하는 것 같습니다;)
Joshit

22

정말로 긴 문자열을 가지고 있다면 다른 전략을 사용합니다. 파일에 덤프하십시오. 데이터를 파일로 덤프하기 위해 평가되는 디스플레이 뷰에서 사용하는 코드 스 니펫이 있습니다. Commons IO를 사용하지만 JDK 전용 메소드로 할 수 있습니다.

org.apache.commons.io.FileUtils.writeStringToFile(new java.io.File("<filename>"), <expression to evaluate>);

당연히 클래스 경로에 Commons IO JAR이 필요합니다. 그렇지 않으면 JDK 작업에 의지하십시오.


5
멋진 해결 방법. 나는 개인적으로 이것을 최선의 대답으로 받아 들일 것입니다. 주의 사항 : <filename>은 JVM이 실행중인 시스템에 대해 정의되어야하며, 원격 디버깅을 수행하는 경우 차이가 있습니다.이 경우 파일은 Eclipse가 실행중인 워크 스테이션이 아니라 원격 시스템에서 작성됩니다. .
rexford

18

Eclipse 디버그보기에서 문자열 값을 보는 가장 좋은 방법은 다음과 같습니다.

1) Eclipse에서 디버그보기로 전환

2) 변수 창에서 원하는 변수를 선택하십시오.

3) 값이 표시된 변수 창의 표시 영역을 마우스 오른쪽 버튼으로 클릭하고 최대 길이를 클릭하십시오. 세부 사항 구성 창에 최대 문자 값을 입력하십시오.

4) 건배

여기에 이미지 설명을 입력하십시오


1
이 그래픽 설명은 정말 유용합니다. +1
Bhavin Shah

3

디버거가 문자열 값을 원하는 지점에 도달하면 sysOut 문을 입력하십시오.

System.out.println("The value is : \n " + query);

위의 문장을 선택하고 마우스 오른쪽 버튼을 클릭-> 실행

콘솔에 값을 인쇄합니다


0

일식에 대한 자바 스크립트 기반 디버깅의 경우 "값 변경"방법과 "최대 길이"방법이 모두 실패했습니다 .watch ( Expressions )에 필요한 객체를 추가 한 다음 감시 된 표현식을 마우스 오른쪽 버튼으로 클릭하여 "전체 값로드"를 선택 하는 것이 유일한 해결책입니다 그것은 나를 위해 작동하지만 출력 조차도 원하지 않는 "\ n"을 삽입합니다 .

참고 -최대 길이까지 값을로드 할 때 "전체 길이로드"가 작동하려면 "최대 길이"를 설정해야합니다 (이클립스의 기본값은 10000 임). 최대 길이를 설정하는 방법은 위의 답변을 참조하십시오.


0

Eclipse Mars에는 "maxLength"가 없습니다. 그리고 "값 변경"은 "표현식"이 아닌 "변수"에서만 작동하므로 위의 어느 것도 나를 위해 작동하지 않습니다.

여기에 이미지 설명을 입력하십시오

그리고 표현은 끝이 아닌 가운데에서 잘립니다. 나는 그들이 기본 행동을 바꾸 었다고 생각한다.

나를 위해 일하는 유일한 방법은 표현식 이름 열의 너비를 펼치고 표현식을 클릭하여 전체 길이 내용을 보는 것입니다.


0

위의 내용 중 아무것도 효과가 없었습니다. 또한 Eclipse의 일부 사용자 인터페이스 요소를 설명대로 찾을 수 없습니다. STS 4.3.1을 사용하고 있습니다.

내가 필요한 가치는 정말 컸으며 엄청난 JSON 요청의 일부입니다. 해결 방법은 Eclipse Debug Shell 콘솔에서 표현식을 사용하고 전체 값의 하위 문자열을 출력하는 것입니다. 부분 값을 볼 수 있으므로 값을 검사하고 마지막 몇 리터럴을 위치의 다음 청크를 출력하는 위치로 사용하십시오. 필요한 것을 얻을 때까지이 방법을 반복하십시오.

String result = new String(reallyBigByteArrayValue, "UTF-8");
result.substring(result.indexOf("some-unique-text"));
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.