GDB 라고 부르는 GNU Debugger는 GNU 소프트웨어 시스템을 위한 기본 디버거.
GDB는 다양한 유닉스 기반의 시스템에서 동작하는 이식성 있는 디버거로,
에이다, C, C++, 포트란 등의 여러 프로그래밍 언어를 지원.
- GDB 사용법
% gcc -g test.c -o test
% gdb
(gdb) file [test] // symbol table을 불러와서 디버깅 준비.
(gdb) list // 현재 위치에서 소스 파일의 내용을 10줄 보여줌.
(gdb) run (r) // 프로그램 시작.
(gdb) break (b) // 라인 번호나 함수 이름을 인자로 줄 수 있음. 특정 라인이나 함수에 브레이크 포인트 설정.
(gdb) disas [func or var] // 특정 주소를 disassembling. ex) disas main
(gdb) step (s) // 프로그램을 한 줄씩 실행. 함수 내부로 step into (진입) 하여 디버깅.
(gdb) next (n) // 프로그램을 한 줄씩 실행. 함수를 step over (지나침) 하여 디버깅.
(gdb) info [function] // 현재 함수 내 모든 local 변수와 그 값 출력.
(gdb) print (p) // 내부에 존재하는 어떤 값 출력. ex) p main : main 함수가 존재하는 메모리 주소 출력.
(gdb) set // 특정 위치의 메모리 값 변경. 디버깅에 사용되는 변수 정의도 가능.
(gdb) clear // 특정 symbol 에 걸려있는 breakpoints, watchpoints 제거. 뒤에 변수명이나 함수명 붙일 수 있음.
(gdb) delete (d) // 뒤에 제거하고자 하는 breakpoint number 를 붙여서 제거.