일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 해킹
- 홍혜걸
- 김영권
- 스페인 코로나
- 은혜의 강 교회
- 조희연
- 뭉쳐야 찬다
- 유튜버 김재석
- 성남 코로나 확진자
- 최강욱
- 성남은혜의강교회
- 임영규
- 제넥신
- 김재석
- 리리남매
- 김영권 아내
- 킹덤 고근희
- 이지혜
- 금리인하
- 이태원 클라쓰 15회 예고
- 학교 개학 연기 4월
- 픽크루
- 양적완화
- 미국 금리인하
- 스콜피온킹
- libtins
- 불가피
- 이상형 만들기
- 폰폰테스트
- 고민정
- Today
- Total
Dork's port
gdb 실행 기본 명령어 본문
리눅스에서 프로그래밍을 하다보면, 또는 시스템 해킹 실습을 위해 gdb를 사용해야 할 경우가 있다. gdb의 기본 명령어에 대해서 알아 보도록 하자.
우선 컴파일시에 옵션(-g)을 주어 gdb에서 debugging가능 하도록 해야 한다.
# gcc -o object -g source.c
그 후 gdb로 디버깅 하기 위해 아래와 같이 실행 하면 된다.
# gdb object
위와 같이 실행하면 object를 debugging mode로 실행 하게 된다. 기본 명령어에 대해 알아보자.
현재 위의 명령어 까지 실행 된 상태에서는 gdb로 동작 대기중인상태 (프로그램이 실행되지 않은 상태)이다. 아래의 명령어(run)로 프로그램을 실행 시킬 수 있다.
r (argument1) (argument2)
아래의 명령어(break)를 이용하면, break point를 설정 할 수 있다. 메모리 주소 대신 *main+24 등과 같은 주소도 설정 가능 하다.
b *0x메모리주소
아래의 명령어(countinue)로 break point에서 멈춘 프로세스를 다시 진행할 수 있다.
c
아래의 명령어(next)는 다음 행을 실행(step over) 할 수 있는 명령어 이다.
n
아래의 명령어(step)또한, 다음 행을 실행(step into) 할 수 있는 명령어 이다.
s
레지스터의 정보를 볼 수 있으며 뒤에 레지스터 명을 적어주면 해당 레지스터를 볼 수 있다.
info reg ($register)
esp에서부터($esp) 16진수로(x) 20바이트(20)만큼 (w 워드 b 바이트 i 명령 행)으로 출력할 수 있다.
x/20(w,b,i) $esp 또는, 메모리 주소
아래의 명령어(quit)으로 gdb 프로세스를 종료 할 수 있다.
q q