C언어 개념 정리: 디버깅 기초
<디버깅>
1. 프로그램 오류의 종류와 디버깅
- 버그: 프로그램에 존재하는 오류
- 디버깅: 오류를 고치는 행위
- 컴파일 에러: 문법적 오류. 컴파일러는 프로그램의 구문, 데이터, 의미없는 문장 등을 검사
- 컴파일 경고: 오류는 아니지만, 오류의 가능성이 있는 부분
- 런타임 오류: 실행시간 오류. 프로그램의 결과가 의도와 다르거나 비정상적으로 종료되는 경우
2. 프로그램 오류 비교
1) 컴파일 오류/경고 확인 및 수정
- 컴파일 요류/경고를 고치는 과정은 매우 쉬움
- 오류로 표시된 라인과 실제 오류가 있는 라인은 다를 수 있음
ex) 세미콜론 누락, 중괄호 오류
- 가장먼저 표시되는 오류내용부터 확인하고 수정
- 실제 오류는 하나이지만 이로 인해 여러군데 오류가 발생하는 것처럼 보일 수 있음
- 맨 처음 오류내용을 해결하면, 나머지는 저절로 해결되는 경우 많음
2) 컴파일 오류/경고와 빌드
- 컴파일 오류가 있으면 실행파일이 생성되지 않음
- 컴파일 경고는 있어도 실행파일 잘 생성됨
- VS의 경우( [Ctrl+F5] )
>> 소스가 변경된 경우 프로그램 빌드에 성공하면 > 프로그램 수행
>> 프로그램 빌드에 실패하면 > 기존 실행파일 수행
3) 런타임 오류 확인 및 수정
- 프로그램 실행 시 발생하는 오류
- 일반적으로 오류가 어디서 발생했는지 알기가 어려움
- 대부분의 시간을 이 오류를 찾고 수정하는데 소비
- 이러한 종류의 오류를 찾아 고치는 작업 >> 디버깅
3. 디버깅
1) 방법1. 프로그램 소스를 쭉 보면서 내가 어디서 틀렸나 찾아본다
- 코드가 짧은 경우에 유효
- 코드가 긴 경우 못찾을 가능성이 훨씬 큼
2) 방법2. 실제로 프로그램을 수행시켜보면서 프로그램이 내가 예상하고 원하는 과정대로 동작하는지 체크
- 계산된 결과가 맞는지 체크
- 화면에 결과값들을 출력해 보기
3) 디버깅의 기본
- 코드 중간에 있는 오류를 찾기 위해 프로그램이 내가 의도하는 과정대로 동작하는지 체크
- 제어 흐름과 변수에 저장된 값 및 주소를 확인
- 간단한 방법은 화면에 결과값을 출력해서 확인하기
- 코드에 값 체크용 조건문을 넣어서 확인
- 또는 개발툴에서 제공되는 디버깅 기능 활용하기
4) 반복문 체크 요령
- 반복문 시작 또는 끝 지점에서 체크
5) 함수 체크 요령
- 함수 시작과 끝 지점에서 체크