느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라
article thumbnail

 프로그래밍을 처음 배울때 디버깅이라는 것에 대해 배우게 되는데 코딩을 시작한지 꽤 지났음에도 편리하다는 이유로 System.out.println으로 디버깅을 했다. 최근에는 JUnit등을 이용한 테스트 케이스를 만드는 것으로 버그에 대해 대처를 하고는 하는데 좀 복잡한 알고리즘 문제를 풀면서 System.out.println만으로는 잡기 한계가 있다는 생각을 하게 되었다.


 이클립스를 사용하면서 디버깅 관련한 메뉴가 있다는 것을 알고는 있었으나 하루 몇시간 투자하기 귀찮아서 해당 기능을 그냥 지나쳐 버렸는데 요즘에는 셜록홈즈에 나온 대사인 '보기만 하고 관찰은 하지 않는다.' 라는 말이 정말 뼈에 사무친다. 얼마나 많이 봐왔던 기능인데 제대로 사용해보지도 않고 있었으니 말이다. 

 

 이렇게 된 거 이참에 제대로 살펴보고 포스팅 해보기로 한다. 일단 디버깅의 사전적 정의에 대해 살펴보았다.

디버깅(영어: debugging) 또는 디버그(영어: debug)는 컴퓨터 프로그램이나 시스템의 정확성 또는 논리적인 오류(버그)를 검출하여 제거하는 과정을 뜻한다. 일반적으로 디버깅을 하는 방법으로 테스트 상의 체크, 기계를 사용하는 테스트, 실제 데이터를 사용해 테스트하는 법이 있다.
_위키피디아

오류를 검출하는 것인데 왜 디버깅인가, 디 에러라고 하면 더 명확할텐데 라고 생각하여 디버깅의 유래에 대해 살펴보았다.

 

 

 

 

옆의 사진은 1945년 9월 9일 Mark.II 컴퓨터 회로에 나방이 들어가 합선을 일으킨 것을 코볼의 발명자인 그레이스 호퍼가 발견한 인류 역사상 최초의 버그. 이 나방은 나중에 미국 해군에서 여러 해 동안 전시했다고 한다. 현재는 스미소니언 박물관이 소장 중.

 

_위키피디아

 

 

 

거의 컴퓨터의 창세기 시절에 나방이 합선을 일으켰고 이러한 컴퓨터에 지장을 주는 경우를 버그가 생겼다고 하게 되는것 같다.

 

자, 그러면 이클립스에서 디버깅(오류잡기)하는 법을 알아보도록 하겠다. 

 

 

 

 

소스코드상에서 오류가 발생했을 것 같은 부분의 시작부분에 break point를 생성한다. break point의 생성방법은 좌측 붉은색으로 표기한 곳에서 더블클릭을 하면 된다.

 

이러한 오류가 발생한 부분을 추측하는 직관적 능력이 내가 봐왔던 사람들마다 천차만별인데 이러한 데서 실력의 편차가 갈리는 것은 아닌가 하는 생각을 하게된다.

 

 

 

 

 

 

 

오류 예측부분에 break point를 만들었으면 F11을 누르거나 좌측의 벌레모양을 누르면 디버깅 모드가 시작된다.

 

 

 

디버깅을 하게될 경우 위와같이 비활성화 되어있던 버튼들이 활성화 되는데 각 버튼의 기능에 대해 살펴보겠다.

 

(Ctrl + Alt + B) 모든 브레이킹 포인트 무시하기

 

 

(F8) 다음의 브레이킹 포인트로 이동하기

 

 

(Ctrl + F2) 디버깅 중지하기

 

 

(F5) 다음 명령줄으로 이동

 

 

(F6) 다음 명령줄으로 이동(단, 메서드를 건너뛴다.)

 

 

 (F7) Return하여 메서드를 빠져나온다.

 

 

메서드 다시 실행하기

 

 

(Shift + F5) 라이브러리에서 제공된 필터에 대해서는 메서드 안으로 들어가고 싶지 않을때 사용

 

 

개인적으로는 디버깅시에 F5버튼을 애용한다.

 

F5버튼이나 명령줄을 옮기는 명령을 실행하면서 우측의 Data가 변하는 것을 주시하며 논리적 오류를 찾으면 된다.

 

이상으로 이클립스 디버깅 방법에 대해 살펴보았다.

profile

느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라

@주현태

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!