이번 포스팅에서는, 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)

by kkikkodev 2015. 5. 3. 22:29