본문 바로가기
C언어/C언어 고급

고급5강_디버깅 기법 완전 정복

by AI쌤 2025. 4. 22.
반응형

안녕하세요!
이번 주는 실전 코딩에서 정말 중요한 기술인 디버깅(Debugging) 을 배워봅니다.

프로그래밍을 하다 보면 코드가 안 돌아가거나, 이상한 값이 나오는 경우가 정말 많죠.
이럴 때, "어디가 문제인지"를 찾아내는 기술이 바로 디버깅입니다.
숙련된 프로그래머일수록 코드를 '덜 틀리는 사람'이 아니라, 빨리 고칠 줄 아는 사람이에요!


1. 디버깅이란?

디버깅은 코드에 있는 버그(bug)를 찾아서 고치는 과정입니다.
버그는 대부분 논리 오류잘못된 조건문, 변수 값의 이상에서 발생하죠.

디버깅의 기본 원칙

  • 문제를 재현할 수 있어야 한다.
  • 작동 흐름을 추적할 수 있어야 한다.
  • 문제를 고친 뒤에도 다른 기능에 영향이 없는지 확인해야 한다.

2. 디버깅 도구 – gdb 사용하기

리눅스 환경에서는 gdb(GNU Debugger)를 많이 사용합니다.

gdb 사용 예제

gcc -g main.c -o main     // -g 옵션: 디버깅 정보 포함
gdb ./main

gdb 안에서 자주 쓰는 명령어:

명령어 기능

break [줄번호] 중단점 설정
run 프로그램 실행
next 다음 줄 실행
print 변수 변수 값 출력
continue 계속 실행
quit 종료

3. 디버깅 예제 – 오류 있는 코드

#include <stdio.h>

int main() {
    int a = 10;
    int b = 0;
    int result = a / b; // 💥 런타임 오류 발생
    printf("결과: %d\n", result);
    return 0;
}

위 코드를 실행하면 0으로 나누는 오류(Division by zero) 가 발생합니다.

gdb로 추적해보기

gdb ./main
(gdb) run
Program received signal SIGFPE: Floating-point exception.
(gdb) backtrace

💡 backtrace는 에러가 발생한 함수 호출 흐름을 보여줍니다.


4. IDE 디버깅 – VSCode 또는 CLion

그래픽 인터페이스로 디버깅하고 싶다면 VSCode 또는 CLion과 같은 IDE를 사용하는 것도 좋은 방법입니다.

  • 중단점(Breakpoint) 클릭으로 설정
  • Watch, Variables, Call Stack 패널로 실시간 추적
  • 마우스로 값 확인 가능

🧠 tip: 처음에는 printf()로 값 찍는 디버깅도 충분히 강력합니다!


5. 오늘의 과제 🎯

과제 주제

🐛 오류가 포함된 C 코드의 버그를 찾고 고치기

과제 내용

  • 일부러 버그가 포함된 코드를 제공 (예: 포인터 오류, 조건문 실수)
  • printf() 또는 gdb를 사용해 문제 위치를 파악
  • 정상 작동하도록 수정한 코드 제출

👉 예시 버그 코드는 따로 제공하거나, 학생 스스로 만들어보게 할 수 있어요.

마무리 정리

  • 디버깅은 프로그래밍에서 가장 중요한 실전 능력
  • gdb, IDE, printf() 등 다양한 방법을 사용할 줄 알아야 함
  • 중요한 건 도구가 아니라 문제를 추적하는 사고력

다음 시간에는 본격적으로 프로젝트를 시작합니다!
직접 주제를 정하고, 설계서를 작성하면서 팀 프로젝트의 시작을 준비해볼 거예요.


 

반응형