gdb 사용에 관한 기본적인 내용은 다음 포스트를 참고하세요.
http://kthan.tistory.com/6

명령어의 일부를 빨간색으로 표시한건 단축키를 의미합니다. 



1. 브레이크포인트 설정 명령어

1.1 break : 특정 위치에 브레이크 포인트 설정


예) break func : func 함수의 시작위치에 설정
     break 123   : 123번째 줄에 설정
     break main.c:func  : main.c 파일의 func 함수의 시작 위치에 설정
     break 123 if i == 1  : i값이 1 일때 123번째 줄에 설정


1.2 rbreak :정규표현식(regular expression)을 사용해 여러 심볼에 브레이크포인트 설정


예) rbreak ^func : fun로 시작하는 모든 심볼에 설정
     rbreak func : func를 포함하는 모든 심볼에 설정


1.3 clear :특정 브레이크포인트 지우기 

     예) clear func : func 함수에 설정한 브레이크포인트 지움
          clear 123  : 123번째 줄에 설정한 브레이크포인트 지움


1.4 info breakpoints: 설정한 브레이크포인트 정보 조회


1.5 enable/disable breakpoints :특정 브레이크 포인트 활성화/비활성화 


예) disable breakpoints : 모든  브레이크포인트 비활성화

     disable breakpoints 1,2,5 : 1,2,5번 브레이크 포인트 비활성화 (info b로 조회한 브레이크포인트 숫자)

     enable breakpoints : 모든  브레이크포인트 활성화

     enable breakpoints 1,2,5 : 1,2,5번 브레이크 포인트 활성화 


1.6 delete :설정한 모든 브레이크포인트를 지움



2. 값 출력 

2.1. info 명령어

info <출력할 타입>: 특정 타입의 info 정보를 출력.
(gdb에서 info를 입력하고 Tab키를 누르면 조회 가능한 모든 값들을 볼 수 있음. )


예) info locals : 지역 변수와 값 출력 
     info variables : 전역 변수와 값 출력
     info registers : 레지스터의 값 출력
     info frame: 스택 프레임 정보 출력
     info thread: 스레드별 정보 출력 


2.2. print 명령어

print/[출력 형식] (형 변환)[변수] : 특정 변수 값을 원하는 포맷으로 출력 

  • 출력 형식:
    t: 2진수
    o: 8진수
    d: int형 10진수
    u: unsigned int형 10진수
    x: 16진수
    c: 1 바이트를 char형
    f: float형 

예) print/x lval : lval를 16진수로 출력 
     print (char *) str : str변수를 "char *" 타입으로 변환 후 출력           


  • 다양한 값 지정 

예) print array@12   : 크기가 12인 array라는 배열을 출력           
    print func::value  : func라는 함수에 있는 value라는 변수 출력 


2.3. list 명령어
list  : 소스 리스트 출력  

예) list    : 현재 실행중인 위치 주변의 소스 출력 
     list func : func 함수의 주변의 소스 출력  
     list 199 : 199 라인 주변의 소스 출력  
     list main.c:main  :  main.c 함수의 main함수 주변의 소스 출력  
     list main.c:199    : main.c 함수의 199 라인 주변의 소스 출력   

  • 보여지는 라인 수 설정 
  예) (gdb) set listsize 20 : list 명령어로 보여지는 라인수를 20줄로 변경



2.4 display 명령어

display <lvalue> : s(step)명령 수행시 매번 lvalue값을 출력
enable/disable display <display번호> : 설정한 번호의 display를 활성화/비활성화



3. 진행 관련 명령어

watch <lvalue> : lvalue에 값이 써질때 마다 브레이크
rwatch <lvalue> : lvalue에서 값을 읽을 때 마다 브레이크

thread [n] : n번째 스레드로 이동(info thread 명령어로 스레드별 정보 조회 가능)

frame [n] : n번째 스택 프레임으로 이동
up [n] : n번째 상위 스택으로 이동
down [n] : n번째 하위 스택으로 이동

※ 'bt' 명령어로 조회되는 결과에서 앞쪽에 있는 숫자가 스택 번호임 


Posted by KT한
,