gdb 명령어

jhyoonzi
|2017. 6. 27. 23:50
$gcc –g –o Test Test.c
Test.c코드를 컴파일 한 뒤 Test이름으로 파일을 생성합니다.
$gdb Test
gdb로 Test를 실행하여 디버깅 합니다.
$gdb Test <프로세스pid>
프로세스에 연결한 뒤 디버깅 합니다.
(gdb) q(quit)
gdb를 종료합니다.
(gdb) r(run)
프로그램을 실행합니다.
(gdb) k(kill)
프로그램을 종료합니다.
(gdb) l(list)
현재 위치에서 10줄의 소스코드를 보여줍니다.
(gdb) list 5
소스코드에 5번째 줄을 중심으로 보여줍니다.
(gdb) list func
func 함수의 소스코드만 보여줍니다.
(gdb) b(break) func
func에 중단점을 지정합니다.
(gdb) break 10
10번째 라인에 브레이크를 지정합니다.
(gdb) break Test.c:main
Test.c파일에 main함수에 브레이크를 지정합니다.
(gdb) break +2
현재 행에서 2개 행 이후에 브레이크를 지정합니다.
(gdb) break -2
현재 행에서 2개 행 이전에 브레이크를 지정합니다.
(gdb) break *0x400100
0x400100주소에 브레이크를 지정합니다.
(gdb) info b(break)
현재 설정된 중단점을 보여줍니다.
(gdb) info locals
현재 상태에서 지역변수에 저장된 정보를 보여줍니다.
(gdb) info variables
현재 상태에서 전역변수에 저장된 정보를 보여줍니다.
(gdb) info registers
레지스터의 정보를 보여줍니다.
(gdb) info functions
함수 리스트를 보여줍니다.
(gdb) clear 1
1번행 중단점을 삭제합니다.
(gdb) enable 1
1번 중단점을 활성화 합니다.
(gdb) disable 1
1번 중단점을 비활성화 합니다.
(gdb) s(step)
현재 위치한 행을 실행합니다.(함수인 경우 내부로 갑니다.)
(gdb) step 5
Step 명령을 5번 실행합니다.
(gdb) n(next)
현재 위치한 행을 실행합니다(함수인 경우 내부로 들어가지 않고 함수를 실행한 뒤 넘어갑니다.)
(gdb) n(next) 5
Next 명령을 5번 실행합니다.
(gdb) c(continue)
다음중단점을 만날 때 까지 실행합니다.
(gdb) u(until)
함수를 나온 뒤 중단점을 만날 때 까지 실행합니다.
(gdb) finish
현재 함수를 실행한 뒤 끝 지점으로 이동합니다.
(gdb) return
현재 함수의 실행하지 않은 뒤 끝 지점으로 이동합니다.
(gdb) watch count
count변수에 값이 변경될 경우 중단점으로 지정합니다.
(gdb) rwatch count
count변수에 값이 읽혀질 경우 중단점으로 지정합니다.
(gdb) awatch count
count변수가 읽히거나 쓰일 경우 중단점으로 지정합니다.
(gdb) p(print) count
count변수의 값을 확인합니다.
(gdb) print func
func함수의 주소를 확인합니다.
(gdb) print *ptr
ptr 구조체의 주소를 확인합니다.
(gdb) print &eax
eax에 레지스터 값을 확인합니다.
(gdb) frame <n>
n번지의 스택 프레임으로 이동합니다.
(gdb) up <n>
n번지에서 상위 프레임으로 이동합니다.
(gdb) down <n>
n번지에서 하위 프레임으로 이동합니다.
(gdb) call func(1,2,3)
func함수를 호출하고 반환값을 출력합니다.
(gdb) disas(disassemble) main
main함수의 메모리 구조를 출력합니다.
(gdb) disassemble 0x400100
0x400100주소에 메모리 구조를 출력합니다.
(gdb) set {int} 0x400100=10
0x400100주소에 10값을 입력합니다.



출처 : 가디언즈보안프로젝트

'ETC' 카테고리의 다른 글

[리버싱 기초]어셈블리어  (0) 2017.06.16
[리버싱 기초]레지스터  (0) 2017.06.16
FTZ 서버 구축(해커스쿨)  (0) 2017.05.28
랜섬웨어 와 예방법  (0) 2017.05.15
쉘 이란? [Linux]  (0) 2016.12.31