
GDB(GNU Debugger)는 GNU 소프트웨어 시스템을 위한 기본 디버거이다. GDB는 다양한 유닉스 기반의 시스템에서 동작하며, C, C++, Go, Rust 등의 여러 프로그래밍 언어를 지원한다.
gdb [프로그램명][core 파일명][PID]q or Ctrl+dlmain 함수 기점으로 소스 출력l 55행을 기준으로 출력l funcl -l file.cpp:funcfile.cpp의 func 함수 부분을 출력l file.cpp:5file.cpp의 5행을 기준으로 출력b funcfunc 함수의 시작 부분부터 브레이크 포인트 설정b 5b file.cpp:funcfile.cpp 파일의 func 함수에 브레이크 포인트 설정b file.cpp:5file.cpp 파일의 5행에 브레이크 포인트 설정b +2현재 행에서 2개 행 이후, 브레이크 포인트 설정b -2현재 행에서 2개 행 이전, 브레이크 포인트 설정b *0x12340000특정 주소에 브레이크 포인트 설정b 5 if var == 05행에 브레이크포 포인트를 설정하는데, var 값이 0일 때 작동tbb 명령과 같으나 1회용 브레이크 포인트이며, 문법은 b와 동일info bcldr (run)k (kill)s (step)s5 s 다섯번 수행과 동일n (next)n5n 다섯번 수행과 동일c (continue) [n]ufinishreturnreturn 123return과 같은나 리턴값을 지정sistep과 동일)ninext와 동일)watch 변수명
특정 변수에 watch point를 설정하고, 특정 변수가 변경 될때마다 break가 걸리면서 이전/현재 값을 출력한다.
info locals로컬 변수 모두 출력info variables전역 변수 모두 출력p [변수명]변수명 pointer 변수 *pointer 변수명 p $[레지스터명]p *[포인터]@[숫자]p '[파일명]'::[변수명]p [함수명]::[변수명]p /[출력형식][변수명]toduxcfap (캐스팅)[변수명]p (char*)ptr)p [포인터변수 or 배열]+[숫자]p (array[1]+4))p [변수명] = [value]info registersinfo all-registersdisplay [변수명]p 명령을 입력하기가 힘드니 특정 변수 진행 중 계속 출력p와 동일한 방식으로 출력 형식 지정 가능disable display [번호]enable display [번호]undisplay [번호]info finfo argsinfo localsinfo catchbtframe [스택번호]updownx/[범위][출력 형식][범위의 단위] [메모리 주소 or 함수명]toduxcfasibhwgdisas [함수명]disas [주소] [주소]call [함수명(인자)]jump *[주소]jump [행번호]jump [함수명]info signalssignal [시그널명]set {타입}[주소] = [값]info 탭키info setset prompt euclid