gdb — 개발 환경 및 프로그래밍
최신 도구 가이드 / 개발 환경 및 프로그래밍 / gdb.html
실행 중인 프로그램의 중단점·스택·변수를 검사하는 GNU 표준 디버거입니다.
기본 정보
| 프로그램 이름 | gdb (지디비) |
|---|---|
| 한 줄 소개 | 실행 중인 프로그램의 중단점·스택·변수를 검사하는 GNU 표준 디버거입니다. |
| 개발·유지 | GNU Project |
| 공식 홈페이지 | https://www.gnu.org/software/gdb/ |
| 공식 문서 | https://sourceware.org/gdb/documentation/ |
| 공식 다운로드 | https://www.gnu.org/software/gdb/download/ |
| 지원 운영체제 | Linux, macOS, Windows (MinGW), 주요 유닉스 |
| 라이선스 | GPL-3.0-or-later |
| 안정 버전 | 18.1 (2026-09-25 공개) — 확인일 2026-10-18 |
| GitHub 저장소 | https://sourceware.org/git/gdb.git |
| 분류 | 개발 환경 및 프로그래밍 (태그: 디버깅, 크래시 분석, 스택 추적) |
이 프로그램은 무엇인가?
gdb(GNU Debugger)는 실행 중인 프로그램에 중단점을 걸고, 한 줄씩 실행하며, 변수와 스택을 들여다보는 표준 디버거입니다. 서버에서 서비스가 죽을 때 남긴 core dump를 열어 사고 지점을 재구성하는 데도 쓰입니다.
C·C++로 된 네이티브 서비스(웹 서버, DB, 커널 모듈 등)의 이상 동작을 원인까지 추적할 때 사실상 기본 도구이며, 원격 서버에서 코어 파일만 받아와 분석하는 워크플로도 널리 쓰입니다.
어떤 문제를 해결하는가?
- 서비스가 시그널로 죽었을 때 어디서 죽었는지 core dump로 확인해야 할 때.
- 재현되는 이상 동작의 변수 상태를 단계별로 확인해야 할 때.
- 스택 오버플로우·널 포인터처럼 메모리 수준 문제를 추적해야 할 때.
- 운영 서버에서 디버그 빌드를 올리지 않고 코어 파일만으로 분석해야 할 때.
주요 기능
중단점과 단계 실행
행·함수·주소에 중단점을 걸고 한 명령씩 실행합니다.
- 활용 상황: 이상 동작 직전 지점에서 멈춰 변수를 확인합니다.
- 얻는 결과: 정확한 재현 지점과 당시 상태를 얻습니다.
- 제한 사항: 스레드·비동기 로직은 중단점 위치 선정이 까다로울 수 있습니다.
스택 트레이스
crash 시점의 호출 스택을 계층으로 출력합니다.
- 활용 상황: core dump에서 죽은 함수와 호출 경로를 봅니다.
- 얻는 결과: 원인 함수와 상위 호출자를 수 초 만에 파악합니다.
- 제한 사항: 디버그 심볼이 제거된 빌드는 라인 정보가 부족합니다.
변수·메모리 검사
print·x 명령으로 변수 값과 메모리 덤프를 확인합니다.
- 활용 상황: 오류 발생 조건의 입력값을 추적합니다.
- 얻는 결과: 손상된 포인터·예상 밖 값을 직접 확인합니다.
- 제한 사항: 최적화 빌드(-O2)는 변수가 최적화되어 표시값이 원본과 다를 수 있습니다.
원격 디버깅
target remote로 다른 기기의 프로세스·시뮬레이터에 붙습니다.
- 활용 상황: 임베디드 기기·크로스 빌드 환경을 디버깅합니다.
- 얻는 결과: 개발 기기에서 원격 프로세스를 디버그합니다.
- 제한 사항: 네트워크·권한 설정이 필요해 초기 구성 부담이 있습니다.
설치 및 실행
Ubuntu / Debian
배포판 저장소 버전을 설치합니다. 최신 기능은 GNU 다운로드 페이지의 소스 빌드를 사용합니다.
sudo apt update
sudo apt install gdb
RHEL / CentOS / Fedora
기본 저장소에서 설치합니다.
sudo dnf install gdb
소스 빌드 (최신 버전)
공식 다운로드 페이지에서 소스를 받아 빌드합니다.
# https://www.gnu.org/software/gdb/download/
실제 사용 예제
core dump 열기
코어 파일을 gdb로 열어 어디서 죽었는지 봅니다.
gdb /usr/sbin/app-server core.12345
중단점 설정 후 실행 (예시)
함수에 중단점을 걸고 실행합니다. 출력은 예시입니다.
gdb ./app-server
gdb) break handle_request
gdb) run --config /etc/app.conf
스택 확인
crash 또는 중단 시점의 호출 스택을 출력합니다.
gdb) backtrace full
장점과 한계
장점
- C·C++ 네이티브 코드 디버깅의 표준 도구로 문서·자료가 풍부합니다.
- core dump 기반 사후 분석이 강력해 운영 서버 장애 추적에 적합합니다.
- GNU 라이선스로 자유롭고 대부분의 Linux에 기본 포함됩니다.
- Python 스크립팅으로 반복 분석을 자동화할 수 있습니다.
사용 전에 고려할 점
- GUI가 없어 명령 문법 학습 곡선이 있습니다.
- 최적화 빌드는 변수·스택이 왜곡되어 표시될 수 있습니다.
- Go·Rust 등 GC 언어 프로그램은 지원 범위가 제한적입니다.
- 심볼 제거 빌드는 라인 단위 분석이 어렵습니다.
비슷한 프로그램과 비교
| 프로그램 | 특징 | 이런 경우에 적합 |
|---|---|---|
| lldb | LLVM 프로젝트의 디버거로 Clang·macOS 환경과 잘 어울립니다. | macOS·LLVM 툴체인 개발 환경에서. |
| valgrind | 실행을 느리게 하면서 메모리 오류를 탐지합니다. | 재현 어려운 메모리 누수를 찾을 때. |
| AddressSanitizer | 컴파일 타임 계측으로 메모리 오류를 빠르게 잡습니다. | 테스트 단계에서 오류를 조기에 발견할 때. |
공식 자료 및 추가 학습
- 공식 홈페이지 — https://www.gnu.org/software/gdb/
- 공식 문서 / 지식베이스 — https://sourceware.org/gdb/documentation/
- 공식 다운로드 — https://www.gnu.org/software/gdb/download/
- 릴리스 노트 — https://sourceware.org/gdb/news/
- 소스 / 개발 자료 — https://sourceware.org/git/gdb.git
버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요.
실제 실행 화면
gdb로 core dump를 열어 크래시 지점과 스택을 확인하는 화면을 서버 풍으로 재구성한 합성 예시입니다. 화면은 합성 예시이며 실제 실행 결과가 아닙니다.

실제 운영 중인 서버
이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.