GDB 실행 : gdb [파일 이름]
gdb -q [파일 이름] : gdb 버전 정보에 대한 출력이 없어짐
gdb --args [파일 이름] [arguments~~] : 파일 실행 시, 인자값을 전달할 수 있음.
q, quit : gdb 프로그램 종료
disassemble, disas [함수명] : 해당 함수 부분에 대해 disassemble 진행
* gdb의 기본 출력은 AT&T asm 문법을 따른다. intel 문법으로 확인하고 싶으면 다음 명령어를 입력하면 된다.
* set disassembly-flavor intel
b, break *[주소값] : 해당 주소에 브레이크 포인트를 설정한다.
함수명을 주소값 대신 설정 가능하다. 이 때는 *를 달지 않는다.
break [주소값] [조건문] : 주소값에 브레이크 포인트를 설정하되, 조건문이 T일 경우에만 작동한다.
tb : 일회성 브레이크 포인트 설정
cl [주소값] : 해당 주소에 설정된 브레이크 포인트 제거
d : 모든 브레이크 포인트를 지우기
run : 프로그램 실행
run [arguments] : 뒤에 인자값 전달해서 실행 가능.
* 브레이크 포인트를 설정하지 않을 시, 프로그램 끝까지 실행된 후, 종료된다.
c : 다음 브레이크포인트까지 프로그램 실행. 브레이크 포인트가 없을시 프로그램 종료.
s, n : 다음 한 행 실행.
* s는 함수를 마주칠 시 함수 안으로 진입.
** n은 함수를 마주칠 시 함수 수행 후 다음 행으로 넘어감.
*** si, ni는 s, n과 똑같지만 어셈블리 명령어 단위로 수행한다.
u : 루프 빠져나감
finish, return : 함수를 빠져나감. finish의 경우, 함수를 수행하고 나가고 return은 중도에 나간다.
* return [리턴값]을 사용할 경우, 지정한 리턴값을 반환한다.
k, kill : 실행중인 프로그램 종료
watch [변수명] 프로그램 실행 중, 해당 변수의 값이 바뀔 경우 바뀐 내용을 출력해준다.
* watch point도 d 명령을 통해 삭제 가능.
info locals : 현재 스택의 로컬 변수 출력
info variables : 전역 변수 출력
info registers : 레지스터 전체 출력
info f : 스택 프레임 출력
bt : 전체 스택 프레임 출력
p [변수명] : 해당 변수 value 출력
p $[레지스터] : 해당 레지스터 값 출력
p *[포인터] : 해당 포인터 내부 값 출력
display [변수명] : 설정한 변수 값을 진행 중 계속 출력함
*undisplay [번호] : display 변수 제거
x/[범위][출력 형식][범위 단위] [주소/함수명]
*ex) x/10 main : x에서부터 4byte씩 10단위 출력
'Computer' 카테고리의 다른 글
운영체제 12주차 (0) | 2019.11.22 |
---|---|
[asm] INT 21H (0) | 2019.10.01 |
메모리 구조 (0) | 2019.09.24 |
Register - 간단 개념 정리 (0) | 2019.09.23 |
함수 프롤로그/에필로그 (0) | 2019.09.19 |