특집기사:효율적인 이클립스 디버깅을 위한 팁

위클립스
이동: 둘러보기, 찾기
Article.png 특집기사 정보
JordiBohmeLopez.jpeg
원문 보기
저자 Jordi Böhme López
역자 안준하
감수 이지율
Recipe.gif 이 문서는 번역된 문서입니다. 원문 읽기

효율적인 코드를 작성하는 것도 중요하지만, 이는 전문가가 되기 위한 한 단계에 불과하다.

다른 단계는 디버깅 하는 방법을 배우는 것이다. 기존코드나 서드 파티의 코드를 다루며 일을 할 때, 그 작동방식을 제대로 이해하려면 디버깅을 해야 한다.

이 글 통해, 이클립스 JDT 디버거 사용 방법을 마스터하고, 더 효율적으로 디버깅 할 수 있도록 기초적인 팁들을 소개한다.

여러분이 프로젝트에서 디버그 구성을 실행하는 방법에 대해 알고 있다고 가정하고 설명하겠다.

목차

[편집] 브레이크 포인트

[편집] 라인 브레이크 포인트

Breakpoint-s.png

흔히 라인 브레이크 포인트로 언급되며 가장 기본적인 브레이크 포인트로, 대부분의 독자들은 이미 사용하는 방법을 알 것이다.

혹시라도 익숙하지 않는 경우, 의심이 가거나 조사하고자 하는 코드의 왼쪽을 더블 클릭하면 라인 브레이크 포인트를 만들 수 있다. 애플리케이션의 실행이 해당 지점에서 중단하게되고, 이 상태를 분석할 수 있으며, 대게의 오작동 원인을 찾을 수 있을 것이다.

[편집] 예외 브레이크 포인트

ExceptionBreakpoint-s.png

이따금 예외가 발생하기는 하는데, 어디서 발생하는지 잘 모를 경우가 있다.(예: 스택 트레이싱이 불가능한 경우) 혹은 예외가 로깅되지 않는 등, 관측이 곤란한 경우도 있을 수 있다. 이런 경우에 전역 예외 브레이크 포인트(Exception breakpoints)를 사용할 수 있으며, 이는 해당 예외가 발생할 때 마다 코드 실행을 멈춰 준다.

Debug퍼스펙티브 안의 Breakpoints뷰에서 ExceptionBreakpoint.png 아이콘을 눌러 예외 브레이크 포인트를 만들 수 있다.

[편집] 조건부 브레이크 포인트

ConditionalBreakpoint.png

디버깅 속도를 높이기 위해 매번 브레이크 포인트에서 멈추는 대신, 멈추기 위한 조건을 추가할 수 있다. 브레이크 포인트는 주어진 조건이 참일 때만 멈추게 되고, 더 이상 시도 때도 없이 실행을 멈춰 버그 사냥을 방해하는 일은 사라질 것이다.

Breakpoints뷰에 원하는 breakpoint를 우클릭하면 Breakpoint Properties를 찾을 수 있으며, 이 안에서 조건을 편집할 수 있다.

[편집] 디버그 출력 양식

DetailFormatter.png

디버깅을 하면서 특정 변수가 객체의 값을 조사하다 보면, 별 의미도 없는 텍스트 값들을 보게되는 경우가 있다. 일반적으로 toString() 메서드의 값이 출력된다. 그렇다고 디버깅을 위해 toString()을 재정의하는 것도 곤란하다. 대신 디버그 UI에서만 사용할 디버그 출력 양식(Detail Formatter)를 정의하여, 별개의 표현 양식을 가지게 할 수 있다.

variables뷰에서 원하는 variable에 오른쪽 마우스 클릭을 하면 New Detail Formatter를 선택할 수 있다.

[편집] 논리 구조로 표현하기

LogicStructure-s.png

단 한 번의 클릭으로 어떤 차이가 생길 수 있는지 위 그림이 잘 보여주고 있다. 양쪽 뷰에는 동일한 map 객체를 표시하고 있다. 논리 구조로 표시(Logic Structure) 기능을 켬으로 인해, Variable 뷰는 기계적 계층 구조 대신, 사람이 읽을 수 있는 형태로 표현한다.

[편집] 프레임 드랍(Drop to Frame)

DropToFrame.png

멈춰선 브레이크 포인트 지점이, 조사거리가 풍부한 흥미로운 지점을 이미 지나쳐 버린 경우, 프레임 드랍기능을 이용할 수 있다. 이를 이용하면 과거의 스택으로 돌아가 그 지점부터 다시 디버깅할 수 있게 된다.

[편집] 인스펙트와 왓칭

Watch.png

인스펙트(Inspect)는 Variables 뷰와 동일한 기능을 제공한다. 이를 이용하면 원하는 객체를 조사할 수 있다.

반면, 왓칭(Watch) 기능은 특정 개체의 상태가 시간의 흐름에 따라 어떻게 변하는지 추적할 수 있게 해 준다.

[편집] 변수 값 바꾸기

ChangeVariable-s.png

variable뷰는 단지 값을 보여주는 것 보다 더 많은 것을 할 수 있다. 값을 관측하는 것 외에도 직접 값을 편집할 수 있다. 더 이상의 설명은 필요 없다고 생각된다 :)

[편집] Step Into, Over and Return - Shortcuts

다음 키들을 기억해라. 여러분이 마우스를 사용하지 않고 디버깅 시간을 매우 빠르게 단축시켜 줄 것이다.

역자주 Ctrl + R 은 선택한 줄까지 코드 흐름을 진행시킨다. 이 역시 매우 유용하다.

[편집] 스텝 필터

Stepfilters.png

"Step Filters"는 디버깅하는 동안 지나치거나 보고싶지 않을 때 필터링 할 수 있다. 이것은 여러분이 실제 코드에 집중할 수 있게 돕고, 여러분이(심지어 소스를 가지고 있지 않더라도) 내부 동작에 노출되지 않게 만들어준다.

Step FiltersPreferences > Java > Debug > Step Filtering 에서 찾을 수 있다.


[편집] 원격 디버깅

조리법:RCP 원격 디버깅하기 항목 참조.

[편집] 메모리 덤프 + 메모리 분석

가끔 여러분은 라인 디버깅으로 얻을 수 있는 것보다 응용프로그램 내부 동작에 대한 큰 그림이 필요하다. 특히 메모리 누수를 찾기 위해서 말이다. 이런 경우 Eclipse Memory Analyzer가 더 좋을 수 있다.


이 기사에 대한 의견은 토론 페이지를 통해 나눌 수 있습니다.

개인 도구
이름공간
변수
행위
포탈
탐색
도움
도구모음