[Java] 자바 디버깅 방법, 이클립스를 이용해서 자바 디버깅 하기 |
환경 : Eclipse Mars, Android 4.2.2 |
프로그램에서 디버깅은 필수 입니다. 디버깅을 어떻게 하느냐에 따라 프로그램의 생산성과 능력이 결정되기 때문입니다. 그래서 프로그램하실 때 GUI 툴에는 디버깅 기능이 아주 잘 되어 있습니다. 자바개발에서 가장 많이 쓰이고 있는 이클립스에도 디버깅 기능이 있죠.
▼ 이클립스에는 debug perspective 가 있습니다. Run/Debug 를 하게 되면 자동으로 Debug perspective 로 이동하게 됩니다. 이곳에서 디버깅을 하게 되는 것이죠. 디버깅 perspective 를 추가하기 위해 Open Perspective 를 클릭해 보시면 볼수 있습니다.
1. 브레이크 포인트 |
▼ 디버깅은 가장 핵심은 브레이크 포인트 입니다. 그러니까 조사하고 싶은 시점에 진행을 멈추고 각 객체에 들어가 있는 값들을 확인하는 것이죠. 에디터에서 의심되는 소스의 라인을 더블클릭하시면 조그마한 점이 찍힙니다. 이것이 브레이크 포인트 입니다. 프로세스가 단계별로 진행되다고 이곳에 오게 되면 멈추게 되겠죠.
▼ 실제로 브레이크 포인트에서 멈추는지 확인해 보겠습니다. F11 단축키를 누르거나 Run 메뉴 > Debug 를 클릭합니다. 그럼 바로 디버깅 모드로 컴파일이 진행됩니다.
▼ 컴파일이 되고 프로그램이 실행되면 브레이크 포인트가 있는 라인에서 아래 그림과 같이 멈추게 되는 것이죠. 이 소스를 작성한 본인은 브레이크 포인트를 찍은 목적이 있습니다. 자신의 생각대로 출력값이 안 나오거나 에러가 나서 원인이 무엇인지 파악하기 위해서 겠죠. 이렇게 원인을 파악하기 위해 단계를 진행하는 방법과 각 변수에 값이 무엇인지 확인하는 방법에 대해 알아 보겠습니다.
2. 디버깅 진행 |
▼ 디버깅을 하게 되면 위에서 언급했던 대로 Debug Perspective 화면으로 전환됩니다. Debug Perspective 상단에는 디버깅을 진행할수 있는 아이콘들이 나타납니다. 이 아이콘들의 용도는 다음과 같습니다. 여기에서 아주 유용한 기능중 하나가 Drop to Frame 입니다. F6 을 눌러 단계별로 진행하다가 보고 싶은 변수 값을 놓치는 경우가 있죠. 그때 Drop to Frame 을 누르게 되면 해당 함수의 처음으로 이동하게 되므로 다시 확인해 볼수 있습니다.
1) Skip All Breakpoints : 모든 브레이크 포인트 건너뜀
2) Resume(F8키) : 다음 브레이크포인트까지 진행함
3) Suspend : 쓰레드를 일시 정지하며 현재 수행문에 지정한 것과 같음
4) Terminate : 쓰레드 종료
6) Step Into(F5키) : 한단계 진행하는데 다음 라인이 함수 안이면 함수 안으로 들어감.
7) Step Over(F6키) : 함수 호출을 지나치고 현재 위치에서 한 단계 진행
8) Step Return(F7키) : 현재 함수 끝까지 바로 가서 리턴한 후 함수 호출부로 되돌아 감
9) Drop to Frame : 선택한 스택 프레임의 첫 행으로 이동. 처음부터 다시 하고자 할 때
10) Use Step Filters(Shift+F5) : 스텝 필터링
▼ 이렇게 디버깅 진행 메뉴들은 상단 아이콘이 아닌 메뉴에서도 볼수 있습니다. Run 메뉴에 보시면 Debug Perspective 화면에서 볼수 있던 모든 디버깅 메뉴들이 있습니다.
3. 현재 브레이크되어 있는 시점에서 객체값 확인하는 방법 |
▼ 이제 단계별로 진행하는 방법을 알았으니 변수들에 들어 있는 값을 확인해서 문제점을 찾아 봐야 겠죠. Step Into 나 Step Over 를 눌러 단계별로 진행하면서 의심되는 변수가 있다면 마우스로 가져갑니다. 그럼 팝업창이 뜨면서 해당 변수에 값들을 볼수 있습니다.
▼ 현재 프로그램에서 쓰이고 있는 모든 변수들을 확인하고 싶다면 상단에 있는 Variables 창으로 갑니다. 마우스로 확인하는 방법은 하나만 확인이 가능하지만 Variables 창에서는 모든 변수들을 실시간으로 확인할수 있습니다.
▼ [Variables] 바로 옆에 있는 [Breakpoints] 탭은 현재 프로젝트에 설정되어 있는 모든 브레이크 포인트 정보를 볼수 있습니다. 해당 브레이크 포인트를 스킵하고 싶다면 체크해제 하시면 됩니다. 그리고 항목을 더블클릭하시면 브레이크 포인트가 설정된 포인트로 바로 이동할수 있습니다.
▼ 마지막 탭인 Expressions 은 내가 주로 보고 싶은 변수들을 추가해서 관찰할수 있습니다. Variables 는 변수들이 전부 모여 있기 때문에 일일이 찾아서 보기에는 불편합니다. 그래서 필요한 것만 추가해서 관찰할수 있는 Expressions 을 많이 이용하게 됩니다.
▼ Expressions 창에 추가하고 싶다면 변수를 선택하고 오른 마우스를 클릭합니다. 그리고 단축메뉴중 [Watch] 클릭하시면 바로 추가 됩니다.
'자바(JAVA)' 카테고리의 다른 글
[Java] 자바 로또 프로그램 만들기 (10) | 2015.12.23 |
---|---|
[Java] 자바 라이브러리 추가하는 여러가지 방법 – Eclipse 사용 (1) | 2015.06.07 |
[Java] 자바 디버깅 방법, 이클립스를 이용해서 자바 디버깅 하기 (8) | 2015.06.05 |
[Java] 자바 세계 시간 혹은 각국 현재 시각 얻어 오는 방법 (0) | 2015.06.03 |
[Java] 자바 맵 클래스 HashMap 을 사용하는 방법 (2) | 2015.06.01 |
[Java] 자바 디컴파일러 다운로드 사용법, JD-Eclipse 이클립스 셋팅해서 사용하기 (0) | 2015.05.27 |
댓글을 달아 주세요
자바 2015.09.08 07:54 댓글주소 수정/삭제 댓글쓰기
잘읽고갑니다^^ 명확하네요
네 감사합니다. ^^
초보프로그래머 2015.09.12 20:53 댓글주소 수정/삭제 댓글쓰기
VBA로 시작하여 디버깅을 너무 편하게 해서 그런지
C언어나 자바는 어렵게 느껴졌는데 이 설명을 보니 한참 수월해졌네요 ^^
감사합니다.
정다솜 2016.02.21 15:04 댓글주소 수정/삭제 댓글쓰기
안녕하세요? 이클립스 초보입니다.
말씀하신대로 브레이크포인트를 설정한 후 F11키를 통해 디버그를 눌러도 Ctrl+F11을 누른것과 같이 아무 차이도 없이 실행이 됩니다. 위에 설명되어있는 디버깅모드 화면으로 변하지도 않구요.
어떤 문제가 있는 걸까요?
Run As 와 Debug As 둘 중에 Debug As 로 실행하신 건가요?
잘 보고 갑니다! 깔끔하고 명확하게 정리해주셨네요
녹두님최고 2017.03.18 20:30 댓글주소 수정/삭제 댓글쓰기
감사합니다
2017.05.09 14:14 댓글주소 수정/삭제 댓글쓰기
비밀댓글입니다