GDB

Bug : 컴퓨터 프로그램의 결함


Logic error : 제어문이나 데이터 형의 잘못된 사용 -> 비정상적인 결과


Compile error : 문법 오류


Runtime error : 프로그램의 실행 도중 발생하는 오류


Link error : 전역변수 정의 및 함수 선언 및 정의가 잘못된 경우


Debugging : 버그를 발견하여 수정하는 것





GDB : 프로그램이 실행될 때 내부에서 어떻게 작동되는지를 확인


           -g 옵션 : 컴파일 되는 실행 파일에 디버깅 정보 삽입



o 사용법


l ß 소문자 L 을 뜻한다.


l 메인 함수를 기점으로 소스 출력


l [행번호] 해당 행 주위의 소스를 보여준다


l [파일명]:[함수명] 특정 파일의 소스를 보여준다


l [함수명] 해당 함수의 소스를 보여준다


l - 출력된 행의 이전 행을 출력


l file.c:func file.c 파일의 func 함수 부분 출력


l file.c:10 file.c 파일의 10행을 기준으로 출력

 

브레이크포인트 : 실행 도중 프로그램에 대한 추가적인 정보를 알아내기 위한 수단


b func func 함수의 시작 부분에 브레이크 포인트 설정


b 10 10행에 브레이크 포인트 설정


b file.c:func file.c 파일의 func 함수에 브레이크 포인트 설정


b file.c:10 file.c 파일의 10 행에 브레이크 포인트 설정


b +2 현재 행에서 2개 행 이후 지점에 브레이크 포인트 설정


b -2 현재 행에서 2개 행 이전 지점에 브레이크 포인트 설정


b *0x8049000 0x8049000 주소에 브레이크 포인터 설정(어셈블리로 디버깅 시 사용)


b 10 if var = 0 10행에 브레이크 포인트를 설정하는데 var 변수 값이 0일때 작동


tb b 명령어로 브레이크를 걸면 gdb가 종료할때 까지 유용하므로 임시로 한번

만 브레이크 포인트를 걸고 싶을때 사용


d : 모든 브레이크포인트를 지움


s : 현재 행 수행 후 정지 함수 호출 시 내부로 들어감


s 5: s5번 입력


n : 형재 행 수행 후 정지, 함수 호출시 함수 수행 후 다음 행으로 감


c : 다음 브레이크포인트를 만날 때까지 계속 진행


u : 현재 루프를 빠져나감


finish : 현재 함수를 수행하고 빠져나감


return : 현재 함수를 수행하지 않고 빠져나감


return123 : 현재 함수를 수행하지 않고 빠져나감, 리턴값은 123


와치포인트 : 어떤 변수 값이 바뀔 때마다 브레이크를 걸 때 사용


- i locals 현재 상태에서의 지역변수와 값 출력


- p : 개별 변수의 출력


- p $[register] 레지스트 값 확인


- i registers 레지스트 값 전체를 출력



n 출력 형식의 지정


o 사용법


p/[출력형식] [변수]


출력형식


t : 2진수


o: 8진수


d:부호있는 10진수


u:부호없는 10진수


x:16진수


f:부동 소수점


c:최초 1바이트의 문자형

'SW > LINUX' 카테고리의 다른 글

IPC (Inter Process Communication)  (0) 2017.09.05
NETWORK (네트워크)  (0) 2017.09.05
버전관리, SVN  (0) 2017.09.05
GCC compiler (내부 매크로, Makefile)  (0) 2017.09.05
리눅스 명령어 - PROCESS  (0) 2017.09.05