Jaeseo's Information Security Story

GDB(GNU Debuger) 간단 사용법! 본문

Security Study/Reversing

GDB(GNU Debuger) 간단 사용법!

Jaeseokim 2019. 11. 12. 20:11

GDB(GNU Debuger) 간단 사용법

linux에서 사용되는 Debuger 프로그램.

디버깅을 하기 위해서는 [gcc -g 파일명 -o 출력명] -g 옵션이 사용하는 것이 좋다.

-g 옵션을 사용하면 gdb 과정 중에 소스코드를 살펴보며 디버깅이 가능해진다.

 

gdb [프로그램명] | gdb [프로그램명] [PID] | gdb -c [코어 덤프명]

 

명령어 해설
break 함수와 행을 기준으로 중단점을 설정한다. ex) break main
clear clear [breakPoint번호] , clear [함수명] 등의 형식으로 사용. breakPoint 삭제
disable br 모든 BreakPoint 비활성화
enable br 모든 BreakPoint 활성화
condition condition [breakPoint번호] 매개변수 조건형태로 break를 상세히 컨트롤 가능하다.
info breakpoint breakPoint 확인 명령어 breakPoint번호와 breakPoint주소를 출력한다.
info locals 현재 위치한 행에서 접근 가능한 지역 변수 확인
info variables 현재 위치한 행에서 접근 가능한 전역 변수 확인
run 프로그램을 처음부터 시작한다. run arg1 arg2 와 같이 인자값을 넘겨줄수 있다.
next 다음 소스 코드를 실행한다. 함수 내부로는 진입을 하지 않는다.
step 다음 소스 코드를 실행한다. 함수 내부로도 진입을 한다.
continue breakpoint를 만날때 까지 실행을 한다.
finish 현재 스택 프레임이 끝날 때까지만 계속 수행한다.
return return 포인트로 빠져나올때 사용한다. return [값] 형태를 통해 임의로 조정이 가능하다.
until 반복문을 빠져 나올때 사용한다.
kill 프로그램 종료
watch watch [변수] 형태로 변수에 쓰기가 발생하면 break를 걸고 출력해준다.
rwatch watch [변수] 형태로 변수에 읽기가 발생하면 break를 걸고 출력해준다.
awatch watch [변수] 형태로 변수에 읽기,쓰기가 발생하면 break를 걸고 출력해준다.
set disassembly-flavor [형식] disassembly 형식 선택 att, intel 둘중 선택
disassemble disassemble [함수] 어셈블리어 형태로 보여준다. c 언어는 main, assembly는 __start 부터 분석
list 소스 코드 10줄단위로 출력, list [함수명] 형태로도 사용 가능.
print [변수명] 변수의 값 출력, 지역변수를 우선해서 출력 하기 때문에 전역 변수 확인시에는 :: 사용 print '[함수명]'::[변수명]
print [함수명] 함수의 주소값 출력
print *[변수명] 포인터 변수의 값 출력
print $[레지스터명] 레지스터 출력
print [변수명] = [값] 변수에 값을 설정
display [변수명] 작동을 하면서 변수 자동 출력
undisplay [변수명] display 기능 해제
x/[보고싶은 갯수][진수] [주소] memory를 보는 기능 ex)x/100x $esp

아직 지식이 부족해서 이상한 점이나 잘못된 점이 있다면 댓글로 알려주세요!!

Comments