디버깅(Debugging)


 디버깅은 de+bug의 합성어로는 "벌레를 없앤다" 에서 유래 되었습니다. 진공관을 사용하는 시절에 벌레가 들어가면 오류가 났었는데, 이때 벌레를 제거하면 정상적으로 동작하였다고 합니다. 버그가 프로그램 오류라는 의미를 가지게 되었고, 디버깅은 프로그램의 오류를 제거하는 행위라는 의미를 가지게 되었습니다. 프로그래밍에서의 오류는 문법적 오류와 논리적 오류 두 가지로 나뉩니다.


- 문법적 오류

  C언어 작성 과정에서 발생하며, 프로그램 문법상의 오류를 뜻합니다. 문법적 오류는 컴파일 되지 않습니다. 

------------------------------------------------------------------------------------------

#include <stdio.h>

#pragma warning(disable:4996)


int main()

{

int 1;

}

------------------------------------------------------------------------------------------

 위 코드와 같이 문법적 오류를 범하면 아래 사진과 같이 컴파일이 되지않고, 오류 메시지를 출력해줍니다. 오류 메시지는 문법적인 오류의 종류에 따라 다르게 출력됩니다.


- 논리적 오류

 프로그램 논리상의 오류로 컴파일은 되지만, 정상적으로 동작하지 않습니다. 프로그램을 분석해서 찾아야 합니다. 다음과 같은 코드를 작성했을때 정상적으로 동작할까요? 

------------------------------------------------------------------------------------------

#include <stdio.h>

#pragma warning(disable:4996)


int main()

{

int i;

int input;


input = 1;


for (i = 0; i < 5; i++)

{

printf("디버깅 테스트 \n");


printf("종료를 원하시면 0을 입력하세요 : ");

scanf("%d", &input);


if (input = 0)

{

break;

}

}

}

------------------------------------------------------------------------------------------

 결과는 아래 그림과 같이 정상적으로 동작 하지 않습니다. 이유는 if문 조건을 input=0을 써서 조건이 거짓이되어 if문이 동작하지 않습니다.


- 디버깅 도구

 여태까지 공부할 때는 컴파일을 할때, Ctrl+F5 버튼을 눌러 디버깅을 하지 않고 컴파일을 했습니다. Visual Studio에서는 디버깅도구를 이용해 디버깅하면, 한 줄씩 실행하면서 오류를 찾을 수 있습니다.
 Visual Studio에서는 F10키를 누르면 디버깅을 실행 할 수 있습니다. 종료는 Shift+F5키를 눌러주면 됩니다. 디버깅을 시작하면 아래와 같이 빈 콘솔창이 뜹니다.

 이때, 소스코드에는 아래 그림과 같이 왼쪽에 노란색 화살표가 생기는데, 진행 할 지점을 뜻합니다. 아래 그림에서 F10을 눌러 한줄을 더 실행하면 변수 선언부분은 건너뛰고 input=1; 으로 넘어갑니다. 변수 선언 처럼 실제 동작하는 과정이 아닌 부분은 건너 뛰게됩니다. 

 

 계속 한줄 씩 실행해서 scanf로 숫자를 입력하는 부분까지 실행하게되면, 처음에 떴던 콘솔창에 다음과같이 출력됩니다.

 

 콘솔 창에 0을 입력하게되면 input 변수에 0이 저장되는데, 아래 자동 탭을 보면 변수값이 정상적으로 들어간걸 확인할 수 있습니다.


 자동탭 옆에 보면 조사식이라는 탭이 있는데 조사식 탭에서는 이름을 입력하면 값이 출력됩니다. 이름에 input변수와 input=0이라는 값을 각각 입력해봤는데 둘다 결과값이 0인걸 확인할 수 있습니다.


 마지막으로, 반복해서 디버깅할때, 계속 처음부터 한줄씩 실행하려면 번거롭습니다. 이때 사용하는게 중단점입니다. 중단점을 설정하면, 디버깅을 시작할 때 중단점부터 디버깅을 수행하도록 할 수 있습니다. 아래 그림에서는 if(input=0)라인에 중단점을 설정 하였습니다. F9키로 설정/해제 가능합니다.


- 디버깅 관련 단축키

 단축

 의미

 Ctrl + F5

 디버깅 하지 않고, 컴파일 진행

 F5

 (디버깅 시작) 중단점 까지 프로그램을 진행

 F9

 중단점 삽입 / 제거

 F10

 (디버깅 시작) 프로그램을 한 단계씩 진행

 Shift + F5

 디버깅 종료


* 출처 : 한국기술교육대학교 온라인평생교육원 C 프로그래밍_2 

          스타일 C프로그래밍 저.김종훈,김종진 출.WellBook




'언어 > C' 카테고리의 다른 글

[C] 포인터  (0) 2016.12.23
[C] 배열  (0) 2016.12.23
[C] 매개변수 전달 방식  (0) 2016.12.20
[C] 함수(2)  (0) 2016.12.20
[C] 함수(1)  (0) 2016.12.20

+ Recent posts