gdb 사용법

============== 실행 방법 =====================
gdb [프로그램명]
gdb [프로그램명][core 파일명]
gdb [프로그램명][실행중인 프로세스 PID]

============== 종료 방법 =====================
q
Ctrl + d

============== 소스 보기 =====================
l : main 함수를 기점으로 소스 출력
l 10 : 10행 기준 출력
l func : func 함수 소스 출력
l- : 출력된 행의 이전 행 출력
l file.c:func : file.c 파일의 func 함수 부분 출력
l file.c:10 : file.c 파일의 10행 기준 출력
set listsize 20 : 출력되는 행의 개수 수정. (기본 10개)

============== 브레이크 포인트 =====================
bt : 스택 프레임 확인
b : 브레이크 포인트 설정. b main – 메인 함수에 브레이크 포인트.
b 10 : 10행에 브레이크 포인트 설정
b +2 : 현재 행에서 2개 행 이후 지점에 브레이크 포인트 설정. (-2)
b *0x8049000 : 0x8049000 주소에 브레이크 포인트 설정 (어셈블리 디버깅 시)
b 10 if var == 0 : 10행에 브레이크 포인트 설정하는데 var 변수값이 0일 때 작동.
condition [N] var==0 : 브레이크 포인트 고유번호 N에 브레이크가 걸릴 상태 지정.
cl : 브레이크 포인트 지움.
d : 모든 브레이크 포인트 지움.
info breakpoints 또는 info b : 브레이크 포인트 설정 상태 보기.

============== 프로그램 수행 =====================
r : 프로그램 수행
r arg1 arg2 : arg1, arg2 를 인자로 프로그램 수행.
k : 프로그램 수행 종료.
s : step. 현재 행을 수행하고 멈춤. 함수 호출시 함수 내부로 들어감.
n : next. 함수 호출 시 함수 내부로 들어가지 않고 바로 다음 코드로 넘어감.
c : continue. 브레이크 포인트 만날 때까지 멈추지 않고 계속 수행.
u : 반복문 브레이크.
finish : 함수 끝난 시점으로 이동.
return : 함수 빠져나옴.
return 1234 : 함수 리턴값 1234로 빠져나옴.
si : 현재 인스트럭션 수행. 함수 내부로 들어감. (어셈블리 대상)
ni : 현재 인스트럭션 수행. 함수 내부로 들어가지 않음. (어셈블리 대상)

============== 와치포인트 설정 =====================
어떤 변수 값 바뀔 때마다 브레이크 걸려고 할 때 사용.
watch [변수명] : 변수가 바뀔 때마다 브레이크가 걸린다.

============== 변수와 레지스트리 값 검사 =====================

============== 레지스터 검사 =====================
info register : 레지스터 보기.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.