$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 |