본문 바로가기

리눅스

리눅스 GDB (GNU Debugger) 명령어 사용법 정리

반응형

리눅스 GDB (GNU Debugger) 명령어 사용법 정리 (core 덤프)

GDB는 C/C++ 등의 프로그램을 실행하면서 중단점 설정, 변수 확인, 스택 분석 등을 수행할 수 있는 대표적인 디버깅 도구입니다.

1. 기본 도움말 (help)

GDB는 help 명령으로 모든 기능을 탐색할 수 있습니다.

 

기본 사용법

(gdb) help
  • 전체 명령어 분류(Class) 목록 출력
(gdb) help <class>
  • 특정 분류에 속한 명령어 목록 확인
(gdb) help <command>
  • 특정 명령어 상세 설명 확인

주요 명령어 분류 (Class)

  • breakpoints : 중단점 설정/관리
  • running : 프로그램 실행 제어
  • stack : 스택 프레임 분석
  • data : 변수 및 메모리 검사
  • files : 실행 파일 및 심볼 관리
  • status : 상태 정보 확인
  • support : 편의 기능
  • user-defined : 사용자 정의 명령
  • aliases : 명령어 별칭
  • internals : 내부/유지보수용
  • obscure : 기타 기능
클래스 및 명령어는 축약형 사용 가능
예: h b → help breakpoints

2. 프로그램 실행 (Running)

(gdb) run
  • 프로그램 실행 시작
(gdb) run arg1 arg2
  • 실행 시 인자 전달
(gdb) continue
  • 중단된 프로그램 계속 실행

3. 스택(Stack) 분석

스택 개념

  • 함수 호출 시 스택 프레임 생성
  • GDB는 프레임에 번호 부여
    • 0 → 현재 실행 중 함수 (가장 안쪽)
    • 숫자가 커질수록 호출 상위 함수

주요 명령어

전체 스택 출력

(gdb) bt

또는

(gdb) backtrace
  • 현재 호출 스택 전체 출력

특정 깊이까지 출력

(gdb) bt 5
  • 안쪽부터 5개 프레임 출력
(gdb) bt -5
  • 바깥쪽 기준 5개 프레임 출력

프레임 선택

(gdb) frame 2
  • 2번 프레임으로 이동 + 출력
(gdb) select-frame 2
  • 출력 없이 프레임만 변경

프레임 이동

(gdb) up
  • 상위 호출 함수로 이동
(gdb) down
  • 하위 호출 함수로 이동

함수 강제 리턴

(gdb) return
  • 현재 함수 강제 종료 후 호출자에게 복귀
(gdb) return 0
  • 특정 값 반환
728x90

4. 중단점 (Breakpoints)

(gdb) break main
  • main 함수에 중단점 설정
(gdb) info breakpoints
  • 특정 파일/라인에 중단점 설정
(gdb) info breakpoints
  • 중단점 목록 확인
(gdb) delete 1
  • 1번 중단점 삭제

5. 데이터 및 변수 확인 (Data)

(gdb) print 변수명
  • 변수 값 출력
(gdb) display 변수명
  • 실행 중 자동 출력
(gdb) info locals
  • 현재 함수의 지역 변수 출력

6. 파일 및 실행 환경 (Files)

(gdb) file ./a.out
  • 디버깅 대상 실행 파일 지정
(gdb) list
  • 소스 코드 출력

7. 실무 디버깅 흐름 (권장)

gdb ./app
(gdb) break main
(gdb) run
(gdb) bt
(gdb) info locals
(gdb) next
(gdb) step
(gdb) continue

8. 실무 팁

1. 디버그 심볼 포함 컴파일

gcc -g -o app app.c
  • -g 옵션 없으면 디버깅 정보 부족

2. 코어 덤프 분석

gdb ./app core
(gdb) bt
  • 장애 분석 시 필수

3. 로그 대신 GDB 활용

  • Segmentation Fault 원인 분석
  • 무한 루프 추적
  • 메모리 문제 확인

 

728x90
반응형