Code Blocks Windows 64 bit 에서 디버깅 (Debugging) 하기
이번 포스팅에서는, Windows 64 bit 환경에서, Code Blocks 디버깅하는 방법에 대해서 말씀드리겠습니다. 먼저, Windows 64 환경에 Code Blocks 설치하는 방법을 모르시는 분들은 다음 URL 을 참고하십시오.
(Windows 64 bit 에 Code Blocks 설치하기 참고)
http://kkikkodev.tistory.com/42
먼저, 디버깅을 하기 전에, 디버깅 테스트 하기 위한 예제 소스 코드를 위와 같이 미리 작성해 보았습니다. 간단한, main 함수, 그리고 func 함수 로 이루어진 소스 코드입니다.
가장 먼저, 할 일은, debugger 설정입니다. Windows 64 bit 에서 사용할 mingw 를 다운로드 받아 설치하면, 그 폴더 안에 gdb 가 존재하는 것을 볼 수 있습니다. gdb 는 GNU Debugger 를 뜻하는데, 이는 GNU 소프트웨어 시스템을 위한 기본 디버거를 말합니다. mingw 설치방법은 다음 URL 을 참고하세요.
(Windows 64 bit 에 mingw 설치하기 참고)
http://kkikkodev.tistory.com/41
이러한 gdb 를 Windows 64 bit Code Blocks 의 기본 컴파일러로 설정해야 합니다.
Settings 의 Debugger 메뉴를 클릭합니다.
좌측의 Default 를 클릭합니다.
Excutable Path 를 미리 다운받은 mingw 64 bit gdb 로 설정해주어야 합니다. 지정 버튼을 클릭을 합니다. 물론, gdb 상세 옵션 설정 등도 때에 따라 할 수도 있지만, 여기에서는 default 로 사용하기로 하겠습니다.
먼저, mingw64/bin 폴더로 이동합니다. 그 다음에 gdb.exe 를 선택한 후, 열기를 클릭하여 지정해줍니다.
우리의 gdb 로 설정된 것을 확인할 수 있고, OK 를 클릭하여 Debugger 설정을 완료합니다.
이제, Debugger 설정을 마쳤으니, 실제 디버깅을 시작해야 할 차례입니다. 디버깅 시작 방법은 총 2 가지가 있습니다.
첫째, 마우스 클릭으로 원하는 line 의 좌측 부분을 클릭하여 (빨간 원으로 표시되도록) breakpoint (디버깅 기준점) 를 잡고, 상단의 디버깅 메뉴 중에서 Debug / Continue 를 클릭하여 시작하는 방법입니다.
둘째, breakpoint 를 굳이 잡지 않고, 커서만 원하는 라인으로 이동한 후에, 디버깅 메뉴 중, Run to cursor 를 클릭하여 디버깅을 시작하는 방법입니다. 두 가지 디버깅 시작 방법 중, 편하신 것을 선택하여 시작하면 됩니다.
디버깅을 시작하면, 디버깅 시작하는 line 의 좌측에 노란 색의 세모 화살표가 표시되는 것을 볼 수 있습니다. 이것이 현재 디버깅 하고 있는 line 을 의미하는 화살표입니다. 하지만, 디버깅시 확인해야 할 변수값들이 모여 있는 창이 보이지 않습니다. 디버깅 메뉴 중에서, Debugging windows 를 클릭합니다.
나타나는 메뉴 중에서, Watches 를 클릭합니다.
그러면, 위와 같이, 디버깅 하는 line 시점에서, 확인할 수 있는 변수들과 그 값들을 볼 수 있는 창이 나타납니다. 이제, 다음 line 으로 이동해 보겠습니다.
디버깅 메뉴 중, Next line 을 클릭하여 다음 line 으로 이동합니다.
line 이 바뀌면서, 변수값도 변하는 것을 확인할 수 있습니다.
자동으로 보여지는 변수 외에, 다른 변수값을 보고 싶을 때는, 직접 변수명을 입력하면 확인할 수 있습니다.
한 줄씩 디버깅을 시작하다가, 다른 함수 호출문장이 있을 때, 그 함수의 정의부로 넘어가서 디버깅을 하고 싶을 때는, 디버깅 메뉴 중에서, Step into 를 클릭합니다.
그러면, 디버깅 포인트가 호출된 함수로 넘어가게 되고, 변수들도, 함수의 매개변수값과 지역변수로 나누어져서 나타나게 됩니다.
디버깅을 도중에 종료하고 싶으면, Stop debugger 를 클릭하여 종료하면 됩니다.
지금까지, Debugger 설정부터 다음 줄로 내려가면서 하는 디버깅과 함수 안으로 이동하는 디버깅 방법에 대해서 말씀드렸습니다.
위의 2 가지 메뉴가 가장 자주 사용하는 디버깅 메뉴이고, 이제는 그 외의 다른 다양한 디버깅 메뉴들을 마저 살펴보도도록 하겠습니다.
[Debug / Continue]
Debug / Continue 메뉴는 첫 breakpoint 로 이동하면서 디버깅을 시작하거나, 다음 breakpoint 로 이동합니다.
[Run to cursor]
Run to cursor 는 소스 코드 중에서, 현재 마우스 커서가 있는 위치를 기준으로 디버깅을 시작하거나, 혹은 디버깅 중에 특정 커서 위치로 바로 디버깅 시점을 이동할 수 있게 합니다.
[Next line]
Next line 은 한 line 씩 내려가면서 디버깅 시점을 이동합니다.
[Step into]
Step into 는 함수 호출시, 호출되는 함수 안으로 디버깅 시점을 이동합니다.
[Step out]
Step out 은 Step into 와 반대 개념으로, 현재 함수를 호출했던 곳으로 빠져 나갑니다.
[Next instruction]
Next instruction 은 C 언어 말고, 기계어 단위 코드를 디버깅 할 때, 한 명령어씩 디버깅 시점을 이동합니다. (function 진입 안 함)
[Step into instruction]
Step into instruction 은 기계어 단위 코드를 디버깅 할 때, function 으로 진입하여, 다음 명령어로 디버깅 시점을 이동합니다.
[Break debugger (잘 모르는 기능)]
Break debugger 는 잘 모르는 기능입니다. 혹시, 아시는 분은 댓글이나, 메일로 답변해주시면 감사하겠습니다.
[Stop debugger]
Stop debugger 는 디버깅을 종료합니다.
[Debugging windows]
Debugging windows 는 디버깅과 관련된 내용들을 확인할 수 있도록 합니다. (Breakpoiints, CPU Registers, Call Stack, Disassembly, Memory dump, Running threads, Watches)