Computer

GDB 실습하면서 정리하는 명령어

NONE_31D 2019. 9. 25. 02:21

 

gdb 튜토리얼로 희생당하실 printf.c 코드

 

GDB 실행 : gdb [파일 이름]

gdb -q [파일 이름] : gdb 버전 정보에 대한 출력이 없어짐

gdb --args [파일 이름] [arguments~~] : 파일 실행 시, 인자값을 전달할 수 있음.

gdb [파일 이름] : gdb를 실행할 기본 명령어

 

 

q, quit : gdb 프로그램 종료

 

disassemble, disas [함수명] : 해당 함수 부분에 대해 disassemble 진행

* gdb의 기본 출력은 AT&T asm 문법을 따른다. intel 문법으로 확인하고 싶으면 다음 명령어를 입력하면 된다.

* set disassembly-flavor intel

AT&T asm Syntax
Intel asm Syntax

 

b, break *[주소값] : 해당 주소에 브레이크 포인트를 설정한다.

함수명을 주소값 대신 설정 가능하다. 이 때는 *를 달지 않는다. 

break [주소값] [조건문] : 주소값에 브레이크 포인트를 설정하되, 조건문이 T일 경우에만 작동한다.

tb : 일회성 브레이크 포인트 설정

cl [주소값] : 해당 주소에 설정된 브레이크 포인트 제거

d : 모든 브레이크 포인트를 지우기

main 함수에 breakpoint를 설정
전체 브레이크 포인트 제거

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