GDB 핵심 사용법

1. 디버깅 준비

컴파일 시 디버깅 정보 추가

gcc -g -o 프로그램이름 소스파일.c

GDB 실행

gdb 프로그램이름

2. 주요 명령어

프로그램 실행 및 제어

  • 실행: run 또는 r
    run [arg1 arg2 ...]
    
  • 다음 중단점까지 실행: continue 또는 c
    continue
    
  • 한 줄씩 실행 (함수 내부 진입): step 또는 s
    step
    
  • 한 줄씩 실행 (함수 내부 진입 안 함): next 또는 n
    next
    
  • 현재 함수 실행 완료 후 복귀: finish
    finish
    
  • 특정 라인까지 실행: until
    until 라인번호
    

중단점 관리

  • 중단점 설정: break 또는 b
    • 특정 함수:
      break 함수이름
      
    • 특정 파일과 라인:
      break 파일이름:라인번호
      
    • 조건부 중단점:
      break 함수이름 if 조건
      
  • 중단점 목록 확인: info breakpoints 또는 i b
    info breakpoints
    
  • 중단점 삭제: delete
    delete 번호
    
  • 중단점 비활성화/활성화: disable / enable
    disable 번호
    enable 번호
    

변수 및 상태 확인

  • 변수 값 출력: print 또는 p
    print 변수명
    
  • 변수 값 변경: set
    set 변수명 =
  • 현재 함수의 지역 변수 확인: info locals
    info locals
    
  • 현재 함수의 인자 확인: info args
    info args
    
  • 메모리 주소 확인: x 또는 examine
    x/개수형식 주소
    

    예: x/10x $sp (스택 포인터에서 10개의 메모리를 16진수로 출력)


호출 스택 확인

  • 호출 스택 출력: backtrace 또는 bt
    backtrace
    
  • 특정 스택 프레임으로 이동: frame
    frame 번호
    
  • 현재 프레임 정보 확인: info frame
    info frame
    

코드 및 함수 탐색

  • 소스 코드 출력: list 또는 l
    list
    list 라인번호
    list 함수이름
    
  • 함수 목록 출력: info functions
    info functions
    
  • 전역 변수 목록 출력: info variables
    info variables
    

디버깅 종료

  • 프로그램 강제 종료: kill
    kill
    
  • GDB 종료: quit 또는 q
    ```bash
    quit

Categories:

Updated: