티스토리 뷰

 

본 강좌는 아래 동영상 강좌와 같이 진행됩니다. 되도록이면 동영상과 같이 보시는 것을 추천합니다.

 

 

유튜브 채널 가기

 

강좌 10편 동영상 보기

 

 


  

 

 이번시간에는 잠시 쉬어갈 겸, 프로그래밍을 하는 과정에서 가장 많이 사용한다고도 할 수 있는 디버깅 방법에 대해 비주얼 스튜디오 기준으로 알아보도록 하겠습니다.

 

 

 

 1. 빌드 모드

 

디버깅을 설명하기 앞서, 비주얼 스튜디오 상단의 툴바를 살펴봅시다.

 


 툴바 중간쯤에 다음과 같은 'Debug'와 'x86' 이라는 표시가 보입니다. 'Debug' 옆의 ▼모양을 눌러보면 위 그림처럼 'Debug', 'Release' 그리고 '구성 관리자' 라는 것을 볼 수 있습니다. 이것들은 '빌드 모드' 라고 하며, 프로그램을 실행파일로 만드는 '빌드'를 할때 어떤 방식으로 할 것인가를 나눈 것입니다.

 

 ◆ 디버그 모드

 위 그림의 'Debug'에 해당하며, 프로그램을 빌드할때 디버깅에 필요한 정보를 같이 넣습니다. 기본적으로 소스파일이 있는 프로젝트 폴더 아래의 'Debug' 폴더에 실행파일이 생성됩니다.

 

 ◆ 릴리즈 모드

 위 그림의 'Release'에 해당하며, 디버깅에 필요한 정보를 넣지 않고 빌드합니다. 그렇기 때문에 디버그 모드로 빌드할때보다는 실행파일의 크기가 작고, 동작 속도가 빠릅니다. 디버깅에 필요한 정보가 없기 때문에 기본적으로는 디버깅 하기가 까다롭습니다.

 

 두 모드의 차이점은 이것만 있는것은 아니지만, 현재 우리는 다른것은 몰라도 됩니다. 프로그램을 만들때는 디버그 모드로 해놓고 하고, 더이상 수정할 곳이 없이 완벽하게 만들어 다른사람들과 실행파일을 공유하고자 한다면 릴리즈 모드로 해놓고 빌드한다고 알아두시면 되겠습니다.

 

 위 그림의 오른쪽에 있는 'x86'이란건 지금 우리가 관심가질 필요는 없지만, 간단하게나마 설명하자면, x86은 32비트, x64는 64비트로 빌드하는 것이라고만 생각하면 됩니다. 우리는 C언어를 배우는 입장이기 때문에 기본적으로 이것을 건드릴 필요는 없습니다.

 

 디버깅 방법을 알아보기 앞서 이런것을 설명하는 이유는 위의 빌드 모드가 반드시 'Debug'로 되어 있어야 아래의 방법으로 디버깅을 할 수 있기 때문입니다.

 

 

 

 2. 따라해보는 디버깅

 

 디버깅 (Debugging) 이란, 프로그램을 따라가보며 변수값의 변동을 모니터링 하는 등 프로그래밍을 하면서 발생하는 오류를 잡아내는 것이라 할 수 있습니다. 아마도 하나의 완성된 프로그램을 만드는데 가장 많은 시간을 이 '디버깅'에 할애한다고 해도 과언이 아닐 것입니다. 이번에는 그러한 디버깅 방법 중에서 가장 기본적인 방법을 설명합니다.

 

 디버깅을 하는데 필요한 프로그램을 '디버거 (Debugger)' 라 하는데, 다행히 우리가 사용하고 있는 비주얼 스튜디오는 통합 개발 환경이라고 해서, 코드를 입력, 수정할 수 있는 에디터 (Editor), 프로그램을 실행파일로 만들 수 있는 컴파일러(Compiler)와 함께 디버거가 내장되어 있기 때문에 별도의 프로그램을 설치할 필요는 없습니다.

 

 먼저 디버깅 실습용으로 1부터 100까지 더하면서 출력하는 샘플 프로그램을 만들어봅시다.

 

#include <stdio.h>

 

void main()

{

int num = 1;

int total = 0;

 

while (num <= 100)

{

printf("%d + %d = ", total, num);

total += num;

printf("%d\n", total);

 

num++;

}

 

printf("출력이 완료되었습니다.\n");

}

 

 total에 num을 더하고 그 결과를 출력한 후, num을 1 증가시키면서 while문으로 반복하다 num이 100보다 클때 빠져나와 완료메시지를 출력하고 종료가 됩니다. 일단 정상적으로 동작하는지 실행을 해 봅시다.

 


 잘 동작하는걸 알 수 있습니다.

 

 그럼 우선 마우스커서를 while문이 시작하는 곳에 가져가 클릭해봅니다.

 


 while문이 있는 줄이 네모로 둘러싸여 있는것을 확인한 후, 메뉴의 '디버그' → '중단점 설정/해제'를 선택합니다.

 


 처음이라 메뉴로 설명했지만 앞으로는 단축키 'F9'를 사용할 것입니다. 여기까지 해놓고 소스창을 다시 보겠습니다.

 


 while문 줄 왼쪽에 빨간 동그라미가 생겼습니다. 이것을 '중단점 (Break Point)'이라고 합니다. 디버깅시 프로그램이 실행되다 이 중단점을 만나면 이곳에서 프로그램이 정지가 되는 역할을 합니다. 혹시 다른 줄에 잘못 설정했다면 그 줄을 클릭하고 다시 해당 메뉴를 고르거나 단축키 'F9'를 눌러주면 중단점을 해제할 수 있습니다.

 

 이제 메뉴에서 '디버그' → '디버깅 시작'을 선택합니다.

 


 그러면 우리가 만들었던 예제 프로그램이 실행되다가 다음과 같이 비주얼 스튜디오의 화면이 바뀝니다.

 


 우선 소스창에선 아까 설정했던 중단점에 노란 화살표가 겹쳐져 있고, 오른쪽에는 '진단 도구'라는게 보입니다. 아래쪽에도 뭔가 여러가지 것들이 보입니다. 우리는 지금 이것들 전부를 알 필요는 없고, 몇가지만 살펴보겠습니다.

 

 중단점 위의 노란 화살표는 현재 실행하려는 줄 입니다. 프로그래머가 어떤 행동을 할때까지 이곳에서 프로그램 실행이 멈추었다는 표시 입니다.

 

 아래 창에서 '자동' 이라고 되어 있는, 위 그림의 가운데 아래 창은 비주얼 스튜디오에서 자동으로 현재시점의 변수에 들어있는 값을 보여줍니다. 보통은 노란 화살표가 가리키는 곳 위에서 선언된 변수들이 보여집니다. 자동이라 편리하므로 간단한 디버깅시에 사용하기 적합합니다.

 

 이제 위 툴바에서 휜 화살표처럼 생긴 '프로시저 단위 실행' 버튼을 한번 눌러봅시다. 단축키 'F10'을 눌러도 됩니다.

 


 이걸 한번 누르면 소스코드의 노란색 화살표가 있던 줄이 실행되고 다음줄로 이동합니다. 이런 식으로 아래처럼 while문의 처음으로 되돌아올때까지 눌러봅니다.

 


 while문이 한바퀴 돌았습니다. 아래 '자동'창을 보면 변수값이 '1', '0' 이었던 것이, '2', '1'이 되어 있습니다.

 

 또한 프로그램 창을 보면

 


 이렇게 한줄이 출력이 되어 있는걸 확인할 수 있습니다.

 

 이런걸 이용해서 자신이 만든 프로그램이 얘기치 않은 동작을 할 경우, 의심가는 부분에 중단점을 설정하여 디버깅을 시작하고, 한줄씩 실행하면서 원하는대로 변수에 값이 있는지 확인하거나, 원하는대로 프로그램이 실행되는지 확인하면서 프로그램 오류를 잡아낼 수 있습니다.

 

 이제 디버깅을 끝내봅시다. 메뉴에서 '디버그' → '디버깅 중지'를 누릅니다. 단축키는 'Shift + F5'입니다.

 


 디버깅 화면이 다시 원래대로 돌아왔고, 실행중인 프로그램은 종료 됐습니다.

 

 C언어 강좌에서 이런것까지 해야 되나 생각할 수도 있는데, 예제를 직접 해보거나, 다른 프로그램을 간단하게 만들어보는 과정에서 얘기치 않은 실수로 인해 원하는 결과가 나오지 않는 경우도 분명 발생할 것입니다. 이럴때 직접 프로그램이 어디가 잘못되어서 제대로 동작하지 않는지 찾아야 하는데, 처음 하는 입장에서 쉬운 일은 아닐 것입니다. 그렇기 때문에 C언어의 기본 구문을 짧게나마 끝낸 시점에서 디버깅 방법을 간단하게나마 한번 알아보고 넘어가게 됐습니다.

 

 또 간혹 오타가 났거나 괄호 또는 세미콜론 등을 빼먹는 경우도 생깁니다. 그럴때 대부분은 프로그램을 컴파일하면 오류 메시지가 출력됩니다. 일부러 위의 예제에 오타를 내고 컴파일 해보면

 


 이런 식으로 아래 '출력'창에 오류 메시지가 출력되는데, 여기서 'F4'키를 누르면 다음과 같이

 


'출력'창에는 첫번째 오류메시지가 선택되고, 코드에는 printf()문의 줄 왼쪽에 검은 화살표가 생기면서 그 줄이 선택되어 있습니다. 이러한 오류메시지는 처음 보면 무슨 내용인지 모르겠고, 또 너무나 다양하기 때문에 하나하나 설명할 수도 없습니다. 이렇게 오류메시지의 내용이 뭔지 모를때는 저 검은 화살표가 위치한 줄이나 그 윗줄 근처에서 뭐 잘못한게 있나 찾아보면 대부분 있습니다. (물론 예외도 있습니다.)

 

 비주얼 스튜디오 2015에서는 저런 오타정도는 타이핑 하는 순간 잡아내어 아래에 빨간줄이 생기므로, 프로그래밍을 하다가 뭔가 빨간줄이 생겼다면 뭔가 잘못된거라 생각하고 그 주변을 찾아보면 됩니다.

 

 

 

 3. 디버깅 정리

 

 이번시간에 알아본 디버깅 방법은 대략 다음의 순서로 이루어집니다.

 

 1> 프로그램 오류가 발생된 곳이라고 의심되는 부분에 중단점을 설정한다.

 2> '디버깅 시작'을 누른다.

 3> 프로그램이 실행되다가 중단점을 만나면 그부분에서 멈춘다.

 4> 'F10'으로 한줄씩 실행하면서 아래 '자동'창의 변수값을 확인하거나 프로그램이 실행된 화면을 보면서 오류를 찾는다.

 5> 'Shift + F5'로 디버깅을 종료하고 오류를 수정한다.

 

 대략 이런 과정의 반복입니다. 참고로 단축키를 정리해보면

 

F9 : 중단점 설정/해제

Ctrl + Shift + F9 : 모든 중단점 해제

 

F5 : 디버깅 시작

 

 

오류메시지가 출력됐을때

 

F4 : 오류메시지가 발생한 줄로 이동

 

 

디버깅 중에

 

F10 : 노란 화살표가 가리키는 줄을 실행하고 다음줄로 이동

F5 : 다음 중단점을 만날때까지 실행

Ctrl + Shift + F5 : 디버깅 종료

 

 일단은 이정도만 알아두시면 되겠습니다. 다음시간에는 다시 C언어로 돌아가서 '문자열'에 대해 알아보도록 하겠습니다.

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31