--- title: gdb — 개발 환경 및 프로그래밍 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 중단점·스택 추적·변수 검사로 실행 중 프로그램을 분석하는 GNU 표준 디버거. 서버 크래시 추적에도 사용. tags: 프로그램, 개발 환경 및 프로그래밍, gdb --- 실행 중인 프로그램의 중단점·스택·변수를 검사하는 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://www.gnu.org/software/gdb/ - [공식 문서 / 지식베이스](https://sourceware.org/gdb/documentation/) — https://sourceware.org/gdb/documentation/ - [공식 다운로드](https://www.gnu.org/software/gdb/download/) — https://www.gnu.org/software/gdb/download/ - [릴리스 노트](https://sourceware.org/gdb/news/) — https://sourceware.org/gdb/news/ - [소스 / 개발 자료](https://sourceware.org/git/gdb.git) — https://sourceware.org/git/gdb.git 버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요. ## 실제 실행 화면 gdb로 core dump를 열어 크래시 지점과 스택을 확인하는 화면을 서버 풍으로 재구성한 합성 예시입니다. 화면은 합성 예시이며 실제 실행 결과가 아닙니다. ![gdb 코어 덤프 분석 화면: SIGSEGV 발생 위치(request.c:184)와 backtrace가 표시되는 터미널](https://games.cursorai.co.kr/assets/gdb-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/apps/dev/gdb.html