GDB

From HPCWIKI
Jump to navigation Jump to search

GDB

Template:Status

Template:TOC

Overview

GDB(GNU Debugger)는 Linux 디버깅 표준 도구. C/C++/Python 등 다양한 언어 지원. GPU 디버깅은 Nsight 사용.

Summary

  • * 무엇인가? Linux 디버깅 표준 도구. C/C++/Python 등
  • * 왜 필요한가? 프로그램 오류 디버깅. 메모리 누수, 세그멘테이션 폴트
  • * 언제 사용하는가? C/C++ 프로그램 디버깅, 크래시 분석

---

Purpose

이 문서가 존재하는 이유

  • Goal: GDB의 개념, 사용법, 설정 가이드 제공
  • Scope: 기본 개념, 설치/설정, 사용 예제, 모범 사례
  • Non-goals: 고급 커스터마이징, 내부 소스 코드 분석

---

Key Concepts

Template:KeyConcepts

---

Architecture

GDB는 gdb 클라이언트와 gdbserver로 구성. 로컬 프로세스 또는 원격 디버깅 지원. Python 스크립팅 확장 가능. NVIDIA GPU 디버깅은 Nsight Compute/Systems 사용.

---

Workflow

1. 1. -g 옵션으로 컴파일 (디버깅 정보)

2. 2. gdb로 실행 파일 로드

3. 3. breakpoint 설정

4. 4. 디버깅 (run, step, next, continue)

5. 5. 변수 확인 (print)

6. 6. core dump 분석

---

Configuration

# 디버깅 정보로 컴파일
gcc -g -O0 -o myapp myapp.c

# GDB 실행
gdb ./myapp

# GDB 명령어
# (gdb) break main
# (gdb) run
# (gdb) step
# (gdb) print variable
# (gdb) backtrace
# (gdb) continue

# core dump 분석
gdb ./myapp core.1234

---

Best Practices

  • -g 옵션으로 디버깅 정보 포함
  • -O0로 최적화 비활성화
  • gdb + GDBinit 스크립트 활용
  • core dump 설정 (ulimit -c unlimited)
  • Nsight Compute로 GPU 디버깅

---

Limitations

  • 프로덕션 환경에서 디버깅 정보 포함 금지 (보안)
  • GPU 디버깅은 Nsight 필요
  • 대규모 코드베이스에서 디버깅 시간

---

References

---

Related Pages