디버깅(Debugging)
컴퓨터 프로그램 개발 단계 중에 발생하는 시스템의 논리적인 오류나 비정상적 연산을 찾아내고 그 원인을 밝히고 수정하는 작업 과정
디버깅을 왜 해야 하는가?
- "버그가 없는 프로그램은 없다."
- 디버그는 개발자가 작성한 코드가 제대로 동작되는 지(주로 논리적인 오류) 검증하는 기초적인 단계이다.
- 디버깅은 프로그래머가 프로그램 코드를 만드는 과정에서 미처 고려하지 못한 부분이나 실수를 찾는 것이기 때문에 굉장히 어려운 작업이다.
- 버그의 악영향에 따라 단순한 불편부터 크게는 형사 처벌, 사망 사고에 이르기까지 매우 다양한 문제가 발생하므로, 디버깅 과정은 프로그램을 배포하기 이전에 필수적으로 이루어져야 한다.
디버깅 방법
- F10을 누르면 디버깅 모드로 진입할 수 있다.
- 이후 F10을 누르면서 코드를 한 줄씩 실행한다.
- 아래의 단순한 대입 및 덧셈 코드를 디버깅하겠다.
#include <iostream>
int main() {
int a, b, c;
a = 100;
b = 200;
c = a + b;
std::cout << a << " + " << b << " = " << c << std::endl;
return 0;
}
1. F10 누르기 (프로시저 단위로 실행)
- F10을 누르면 왼쪽에 노란색 화살표가 생긴다.
- 화살표는 F10 입력 후 실행될 코드의 위치를 나타낸다.
2. int a, b, c;
- F10을 누르면 코드 한 줄이 실행된다.
- a, b, c라는 정수형 변수가 선언되며, 왼쪽 하단에서 해당 변수에 어떠한 값이 대입되어 있는지 확인할 수 있다.
- 현재 초기화를 안한 상태이기 때문에 쓰레기값이 들어가 있음을 알 수 있다.
3. a = 100;
- a = 100 이라는 대입식에 의해 a에는 값 100이 대입되었음을 알 수 있다.
4. b = 200;
- b = 200 이라는 대입식에 의해 b에 값 200이 대입되었다.
5. c = a + b;
- c = a + b = 100 + 200 이라는 식에 의해 c에 300이 대입되었다.
6. cout 문
- cout에 의해 a, b, c 값이 출력되었다.
7. 끝
- return을 지나 디버깅이 완료되었다.
이처럼 모든 코드를 작성하고나면 코드가 제대로 동작되는지 확인하는 디버깅 과정이 필요하다.