Journey to Security/C언어

VSCode로 C 코드 디버깅하기

Cordilog 2026. 2. 10. 22:20

1. 디버그 기능의 필요성

프로그램이 의도대로 동작하지 않을 때 소스 코드에 출력 함수(printf)를 삽입하여 값을 확인하는 방식은 한계가 있다.

프로젝트 규모가 커질수록 출력 코드를 일일이 추가하고 삭제하는 과정에서 시간이 낭비되며, 코드의 전체적인 실행 흐름을 파악하기 어렵기 때문이다.

VSCode의 디버그 기능을 사용하면 다음과 같은 이점이 있다.

  • 실행 일시 정지: 특정 지점에서 실행을 멈추고 메모리 상태를 점검할 수 있다.
  • 단계별 실행: 코드를 한 줄씩 실행하며 로직의 변화를 추적할 수 있다.
  • 데이터 모니터링: 변수에 저장된 값의 변화를 실시간으로 확인할 수 있다.
  • 런타임 수정: 실행 중에 변수 값을 임의로 변경하여 가상 시나리오를 테스트할 수 있다.

2. C 언어 디버깅 환경 설정

VSCode에서 C 코드를 디버깅하기 위해서는 다음과 같은 준비가 필요하다.

  1. 확장 설치: VSCode 마켓플레이스에서 C/C++ 확장(Microsoft)을 설치한다.
  2. 컴파일러 준비: 시스템에 gcc/g++가 설치되어 있어야 한다.
  3. 디버그 정보 포함 빌드: 컴파일 시 -g 옵션을 반드시 포함해야 한다. (예: gcc -g main.c -o main)
  4. launch.json 설정: VSCode 내의 '실행 및 디버그' 탭에서 디버깅 구성을 생성하여 실행 파일 경로를 지정한다.

3. 디버깅 방법 및 C 코드 예시

아래는 정수 배열의 합계를 구하는 간단한 C 코드다.

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int sum = 0;
    int size = 5;

    for (int i = 0; i < size; i++) {
        sum += arr[i]; // 이 라인에 중단점을 설정
    }

    printf("Total sum: %d\n", sum);
    return 0;
}

 

이 코드의 동작 과정을 디버거로 확인하는 방법은 다음과 같다.

디버깅 실행 순서

  1. 중단점(Breakpoint): 코드 왼쪽의 행 번호 옆 빈 공간을 클릭하여 빨간 점을 표시한다.
  2. 디버그 시작: F5 키를 눌러 디버깅 세션을 시작한다. 프로그램은 중단점에서 멈춘다.
  3. 제어 도구 활용:
    • F10 (Step Over): 다음 줄로 이동한다.
    • F11 (Step Into): 함수 내부로 들어간다.
    • Shift + F11 (Step Out): 현재 함수 밖으로 나간다.
    • F5 (Continue): 다음 중단점이 나올 때까지 계속 실행한다.

4. 디버그 툴에서 확인할 수 있는 정보

디버깅 화면은 크게 네 가지 영역으로 정보를 제공한다.

항목 설명
변수 (Variables) 현재 단계에서 접근 가능한 로컬 및 글로벌 변수의 값을 실시간으로 표시한다.
조사식 (Watch) 특정 변수나 연산식(arr[i] + 10 등)을 등록하여 해당 값의 변화만 집중 관찰할 수 있다.
호출 스택 (Call Stack) 현재 실행 중인 함수가 어떤 함수들에 의해 호출되었는지 계층 구조를 보여준다.
디버그 콘솔 (Debug Console) 실행 중인 상태에서 특정 변수 값을 출력해 보거나, 값을 강제로 변경할 수 있다.