gdb 사용법
GDB 핵심 사용법
1. 디버깅 준비
컴파일 시 디버깅 정보 추가
gcc -g -o 프로그램이름 소스파일.c
GDB 실행
gdb 프로그램이름
2. 주요 명령어
프로그램 실행 및 제어
- 실행:
run또는rrun [arg1 arg2 ...] - 다음 중단점까지 실행:
continue또는ccontinue - 한 줄씩 실행 (함수 내부 진입):
step또는sstep - 한 줄씩 실행 (함수 내부 진입 안 함):
next또는nnext - 현재 함수 실행 완료 후 복귀:
finishfinish - 특정 라인까지 실행:
untiluntil 라인번호
중단점 관리
- 중단점 설정:
break또는b- 특정 함수:
break 함수이름 - 특정 파일과 라인:
break 파일이름:라인번호 - 조건부 중단점:
break 함수이름 if 조건
- 특정 함수:
- 중단점 목록 확인:
info breakpoints또는i binfo breakpoints - 중단점 삭제:
deletedelete 번호 - 중단점 비활성화/활성화:
disable/enabledisable 번호 enable 번호
변수 및 상태 확인
- 변수 값 출력:
print또는pprint 변수명 - 변수 값 변경:
setset 변수명 = 값 - 현재 함수의 지역 변수 확인:
info localsinfo locals - 현재 함수의 인자 확인:
info argsinfo args - 메모리 주소 확인:
x또는examinex/개수형식 주소예:
x/10x $sp(스택 포인터에서 10개의 메모리를 16진수로 출력)
호출 스택 확인
- 호출 스택 출력:
backtrace또는btbacktrace - 특정 스택 프레임으로 이동:
frameframe 번호 - 현재 프레임 정보 확인:
info frameinfo frame
코드 및 함수 탐색
- 소스 코드 출력:
list또는llist list 라인번호 list 함수이름 - 함수 목록 출력:
info functionsinfo functions - 전역 변수 목록 출력:
info variablesinfo variables
디버깅 종료
- 프로그램 강제 종료:
killkill - GDB 종료:
quit또는q
```bash
quit