본문 바로가기
카테고리 없음

Linux의 C 언어 기본 디버거: gdb 사용법 가이드

by 멋대로 정보봇 2024. 6. 9.

Linux의 C 언어 기본 디버거: gdb 사용법 가이드

C 언어는 시스템 프로그래밍에 널리 사용되는 강력한 언어이지만, 디버깅 과정은 복잡할 수 있습니다. Linux에서 C 프로그램을 디버깅할 때 가장 널리 사용되는 도구는 gdb (GNU Debugger)입니다. 이 포스팅에서는 gdb를 사용하여 C 프로그램을 효과적으로 디버깅하는 방법을 단계별로 설명하겠습니다.

1. gdb란?

gdb는 GNU 프로젝트의 일부로, 프로그램을 디버깅하고 실행 중인 프로그램의 내부를 조사할 수 있는 강력한 디버거입니다. gdb는 다음과 같은 기능을 제공합니다:

  • 프로그램 실행 중단 (breakpoints)
  • 변수 값 검사 및 변경
  • 함수 호출 추적
  • 메모리 및 레지스터 상태 조사

2. gdb 설치

대부분의 Linux 배포판에는 gdb가 기본적으로 설치되어 있습니다. 설치되지 않은 경우, 다음 명령어를 사용하여 설치할 수 있습니다:

sudo apt-get update
sudo apt-get install gdb

3. gdb 사용법

gdb를 사용하여 C 프로그램을 디버깅하려면 다음 단계를 따릅니다:

1. 프로그램 컴파일

디버깅 정보를 포함하여 프로그램을 컴파일합니다. 이를 위해 -g 옵션을 사용합니다.

gcc -g -o my_program my_program.c

2. gdb 실행

gdb를 실행하고 디버깅할 프로그램을 로드합니다.

gdb ./my_program

3. 주요 gdb 명령어

gdb에서는 다양한 명령어를 사용하여 프로그램을 디버깅할 수 있습니다. 주요 명령어는 다음과 같습니다:

  • break: 브레이크포인트를 설정합니다. 프로그램 실행이 지정된 위치에서 중단됩니다.

      (gdb) break main
      (gdb) break my_program.c:10
  • run: 프로그램을 실행합니다.

      (gdb) run
  • next: 다음 줄로 넘어갑니다. 함수 호출은 실행되지만 내부로 들어가지 않습니다.

      (gdb) next
  • step: 다음 줄로 넘어갑니다. 함수 호출이 있을 경우, 함수 내부로 들어갑니다.

      (gdb) step
  • print: 변수의 값을 출력합니다.

      (gdb) print variable_name
  • continue: 프로그램 실행을 계속합니다. 다음 브레이크포인트에서 중단됩니다.

      (gdb) continue
  • backtrace: 함수 호출 스택을 출력합니다.

      (gdb) backtrace
  • quit: gdb를 종료합니다.

      (gdb) quit

4. 예제 디버깅 세션

간단한 C 프로그램을 작성하고 gdb로 디버깅해봅니다.

예제 프로그램 (example.c)

#include <stdio.h>

void foo(int x) {
    printf("x is %d\n", x);
}

int main() {
    int a = 10;
    foo(a);
    a = 20;
    foo(a);
    return 0;
}

컴파일

gcc -g -o example example.c

gdb 디버깅 세션

  1. gdb 실행 및 프로그램 로드:

     gdb ./example
  2. main 함수에 브레이크포인트 설정:

     (gdb) break main
  3. 프로그램 실행:

     (gdb) run
  4. 다음 줄로 이동:

     (gdb) next
  5. 변수 a의 값 출력:

     (gdb) print a
  6. 함수 내부로 이동:

     (gdb) step
  7. 함수 호출 스택 출력:

     (gdb) backtrace
  8. 프로그램 실행 계속:

     (gdb) continue
  9. gdb 종료:

     (gdb) quit

5. 결론

gdb는 Linux 환경에서 C 프로그램을 디버깅하는 데 매우 유용한 도구입니다. 이 가이드를 통해 gdb를 설치하고 사용하는 방법을 익히고, 디버깅 과정에서 발생할 수 있는 다양한 문제를 해결할 수 있습니다. gdb를 잘 활용하여 더 안정적이고 효율적인 프로그램을 작성해 보세요.

더 많은 정보를 원하시면 GNU gdb 공식 문서를 참고하시기 바랍니다.