카테고리 없음

[DreamHack] Tool: gdb 명령어 정리

qkrdldks04 2025. 4. 8. 12:38

gdb 사용법

 

실습 예제 , 디버깅 시작


entry

- 진입점에 중단점 설정한 후 실행함

 

> DISASM 영역의 화살표가 가리키는 주소 = 현재 rip 값 = 0x401050 -> 진입점 주소와 일치


context

- 4개 영역으로 구분되는 프로그램 상태를 보여주는 명령어

> registers: 레지스터 상태 

disasm: rip부터 디스어셈블된 결과 

stack: rsp부터 스택의 값 

backtrace: 현재 rip 도달할때까지 어떤 함수들이 중첩되어 호출됐는지


break & continue / run

현재 중단된 start 함수부터 main 함수까지 실행시킴

> break: 특정 주소에 bp 설정

continue: 중된 프로그램 계속 실행

현재 main 에 중단점 설정했기에 run 실행해도 main에서 멈춤

> run: 단순히 실행


disassembly

 

> 함수 이름을 인자로 전달하면 해당 함수가 반환될 때까지 디스어셈블 결과 보여줌


-ni, -si, finish

ni, si 차이점 보기 위해 main에서 printf 함수 호출 지점까지 실행함

 

> ni: printf 함수 다음으로 rip가 이동 = 명령어 실행, 함수 내부 x

si: printf 함수 내부로 rip가 이동 = 명령어 실행, 함수 내부 o

 

finish

- 함수 끝까지 실행

si 로 내부 분석 완료 후 함수 규모가 커서 ni로는 원래 실행 흐름으로 돌아가기 어려울 때 사용


examine / telescope 

- 메모리 조회

- 강력한 메모리 덤프 기능

 

> x: 특정 주소에서 데이터를 원하는 길이만큼 원하는 형식으로 인코딩

> t:  메모리 조회, 메모리값이 포인터일 경우 재귀적으로 따라가며 모든 메모리값 출력


vmmap

- 가상 메모리 레이아웃 출력

 

> 어떤 파일로 매핑 된 영역일 경우 해당 파일의 경로까지 보여줌