(1) 시작과 종료
    - 시작 : gdb [프로그램명][core 파일명][PID]
    - 종료 : q or ctrl + d

 
(2) 소스보기 ( list or l )
    - list : main 함수 기점으로 소스 출력
    - list 10 : 10행을 기준으로 출력
    - list func : func함수의 소스를 출력  (c++ 의 클래스 멤버의 경우 클래스 이름도 입력 해야 함) 
    - list - : 출력된 행의 이전행을 출력
    - list file.c:func : file의 func 함수 부분을 출력
    - file.c:10  : file의 10행을 기준으로 출력

 
(3) 브레이크 포인트 ( break or b )
    - break func : func 함수의 시작부분에 브레이크 포인트 설정
    - break 10 : 10행에 브레이크포인트 설정
    - break file.c:func : file.c 파일에 func함수에 브레이크 포인트 설정
    - break file.c:10 : file.c 파일에 10행에 브레이크 포인트 설정
    - break +2 : 현재 행에서 2개 행 이후 브레이크 포인트 설정
    - break -2 : 현재 행에서 2개 행 이전 지점에 브레이크 포인트 설정
    - break *0x8049000 : 특정 주소에 브레이크 포인트 설정
    - break 10 if var ==0 : 10행에 브레이크포인트를 설정하는데 var 값이 0일 때 작동
 
    - tb : break 와 같으나 1회용 브레이크 포인트임. 문법은 b 와 같음
    - info break :  현재 브레이크 포인트 보기
    - cl : 브레이크 포인트 지우기 ( 옵션은 b와 유사하다 )
    - d : 모든 브레이크 포인트 지우기

 
(3) 진행 명령어
    - run (r) : 프로그램 수행 ( ndk 환경에서는 지원되지 않는다. )
    - kill (k) : 프로그램 수행 종료
    - step (s): 현재 행 수행 후 정지, 함수 호출시 함수 안으로 들어감
        - s 5 : step 다섯번 수행과 동일
    - next (n) : 현재 행 수행 후 정지, 함수 호출시 함수 수행 다음 행으로 감
        - n 5 : next 다섯번 수행과 동일
    - continue (c) : 다음 브레이크 포인트까지 진행
 
    - u :  현재 루프를 빠져나감
    - finish : 현재 함수를 수행하고 빠져 나감
    - return : 현재 함수를 수행하지 않고 빠져 나감
    - return 123 : 위와 같으나 리턴값을 지정함
    - si : 어셈블리 명령어 단위의 수행 ( 진행은 step 과 같음 )
    - ni : 어셈블리 명령어 단위의 수행 ( 진행은 next 와 같음 )
 

(4) 와치 포인트 ( watch )
    - watch  변수명 : 특정변수에 와치 포인트를 설정하고, 특정변수가 바뀔 때마다 브레이크가 걸리면서 이전/현재값을 출력한다.
 

(5) 변수출력 관련
    - info locals : 현재 스택의 로컬변수모두 출력
    - info variables : 전역변수 모두 출력 ( 스크롤 압박주의! )
  
    - p [변수명] : 해당변수 value 출력 ( 포인터변수 입력시 주소값출력, *포인터변수명시 실제 value출력 )
        - p $[레지스터명] : 레지스터 값출력 ( p $eax )
        - p *[포인터]@[숫자] : struct/class 의 배열일 때 배열의 크기를 알림 ( p *pt@4 )
        - p ‘[파일명]’::[변수명] : 변수명 중복시 특정 파일의 전역변수 출력
        - p [함수명]::[변수명] : 변수명 중복 시 특정 함수의 static 변수명 출력 ( 변수명이 중복될 때 기본으로 local 변수가 출력 )
        - p /[출력형식][변수명] : 출력형식에 맞추어 변수값 출력
            - t : 2진수
            - o : 8진수
            - d : 부호없는 10진수
            - u : 부호없는 10진수
            - x : 16진수
            - c : 최초 1바이트 값을 문자형으로 출력
            - f : 부동소수점
            - a : 가장가까운 심볼의 오프셋을 출력
            - p (캐스팅)[변수명] : 변수를 캐스팅하여 출력 ( p (char *)ptr )
            - p [포인터변수or배열]+[숫자] : 특정 주소 + 숫자 위치 출력 ( p (array[1]+4) )
            - p [변수명] = [value] : 특정 변수의 값을 설정
    - info registers : 레지스터 전체 출력
    - info all-registers : MMX 포함 레지스터 전체출력   
    - info registers : 레지스터 전체 출력
    - info all-registers : MMX 포함 레지스터 전체출력

    - display [변수명] : 매번 p 치기 귀찮으니 특정변수 진행 중 계속 출력 ( p 와 동일한 방식으로 출력형식 지정가능 )
        - disable display [번호] : 일시적으로 디스플레이 중단
        - enable display [번호] : 중단했던 번호 다시 출력
        - undisplay [번호] : 출력하던 display 변수 제거


(6) 스택 상태 검사
    - info f [프레임 번호] : 스택 프레임 내용 출력
    - info args : 함수 호출시 인자를 출력
    - info locals : 함수의 지역변수를 출력
    - info catch : 함수의 예외 핸들러를 출력
    - bt : 전체 스택 프레임 출력 ( 콜스택 )
    - frame [스택번호] : 스택번호의 스택 프레임으로 이동
    - up : 상위 스택프레임으로 이동
    - up [숫자] : 숫자만큼 상위 스택프레임으로 이동
    - down : 하위 스택프레임으로 이동
    - down [숫자] : 숫자만큼 하위 스택프레임으로 이동


(7) 메모리상태 검사
    - x/[범위][출력형식][범위의단위]  [메모리주소나 함수명] 
        - 범위 : 기본 4byte 단위
        - 출력 형식
            - t : 2진수
            - o : 8진수
            - d : 부호없는 10진수
            - u : 부호없는 10진수
            - x : 16진수
            - c : 최초 1바이트 값을 문자형으로 출력
            - f : 부동소수점
            - a : 가장가까운 심볼의 오프셋을 출력
            - s : 문자열로 출력
            - i : 어셈블리 형식으로 출력
 
        - 범위의 단위
            - b : 1 byte 단위
            - h : 2 byte 단위
            - w : 4 byte 단위
            - g : 8 byte 단위
 
    - Example
        - x/10i main : main 함수로 부터 40byte 를 어셈블리로 출력
        - x/10 main : main 함수로 부터 40byte를 출력
        - x/10b 0x8048200 : 주소로 부터 10byte를 출력        


(7) 기타
    - directory [경로] : 소스파일을 탐색하기 위해 경로에 directory 를 추가
   - objectdir [경로] : 오브젝트 경로 등록
    - disas [함수명] : 특정함수의 어셈블리 코드를 출력
    - disas [주소] [주소] : 주소사이의 어셈블리 코드를 출력
    - call [함수명(인자)] : 특정 함수를 인자값으로 호출함
    - jump *[주소] : 주소로 강제적으로 분기
    - jump [행번호] : 특정 행으로 강제 분기
    - jump [ 함수명] : 특정 함수로 강제 분기
    - info signals : signal 종류 출력
    - signal [시그널명] : 디버깅중인 프로세스에 시그널 전달  ( signal SIGKILL )
    - set {타입}[주소] = [값] : 특정 메모리에 값을 지정 ( set {int}0x8048300 = 100 )
    - info 탭키 : info 로 확인 가능한 명령어 출력
    - 환경 설정 
        - info set : 설정 가능한 내용 출력
        - set prompt euclid : 프롬프트른 euclid 로 변경

※ 참조 : http://blog.naver.com/euclid1001/40179341273



'L inux  > Command' 카테고리의 다른 글

GDB 명령어 정리  (15) 2014.06.18
find - 파일 검색  (0) 2013.01.24
grep - 패턴 검색  (0) 2013.01.24
diff - 파일 비교  (0) 2013.01.24
ln - 파일 링크  (0) 2013.01.24
cat & tail - 파일 보기  (0) 2013.01.24
by Latte 하늘이도우사 2014.06.18 10:02
  • 담덕 2014.07.04 10:51 ADDR EDIT/DEL REPLY

    요즘 GDB도 사용하나 보네? ㅋ 나도 리눅스 환경에서 개발하고 싶음...

    • Favicon of https://mintnlatte.tistory.com BlogIcon Latte 하늘이도우사 2014.07.04 19:36 신고 EDIT/DEL

      여기까지 어인 행차이신가요 ㅋㅋ
      에버노트에 정리하다가 그냥 Copy&Paste 해놨음 ㅋㅋ

  • 미돌이 2015.01.13 23:26 ADDR EDIT/DEL REPLY

    저 티스토어 초대장 좀 보내주세요 ㅠㅠ 부탁드립니다
    misun_vv@hanmail.net

    감사합니다

  • 브래인 2015.04.19 19:16 ADDR EDIT/DEL REPLY

    저 티스토리 초대장 좀 보내주세여ㅠㅠ 플리즈
    leejiyeon1011@daum.net
    부탁이에요.

  • 민트초코 2015.11.07 12:10 ADDR EDIT/DEL REPLY

    안녕하세요. 티스토리 초대장 부탁드려도 될까요?
    lhj88815@naver.com
    감사합니다~!!

  • 셔기 2015.11.14 21:08 ADDR EDIT/DEL REPLY

    안녕하세요. 티스토리 초대장 부탁드립니다.
    리눅스 소켓 프로그래밍에 관심있어서
    공부하다가 들렸는데 너무 좋은 글들이 많아서요 ^^
    부탁드립니다 !!
    kimjunsuk@daum.net 입니다!

  • JDH 2017.12.11 17:29 ADDR EDIT/DEL REPLY

    안녕하세요 ~ 자바로 벌어먹고있는 개발자입니다
    개발관련해서 티스토리에 정리좀 해볼까 하는데 ..
    혹시 티스토리 초대장좀 부탁드려도 될런지요 ㅠㅠ
    부탁드립니다!
    jungeast92@naver.com

  • 2018.05.12 21:55 ADDR EDIT/DEL REPLY

    비밀댓글입니다

  • 2018.05.18 18:04 ADDR EDIT/DEL REPLY

    비밀댓글입니다

  • 2018.05.26 18:00 ADDR EDIT/DEL REPLY

    비밀댓글입니다

  • 2018.08.25 17:24 ADDR EDIT/DEL REPLY

    비밀댓글입니다

  • 2018.09.12 02:17 ADDR EDIT/DEL REPLY

    비밀댓글입니다

  • 2018.09.12 16:39 ADDR EDIT/DEL REPLY

    비밀댓글입니다

  • 진민서 2018.09.16 01:42 ADDR EDIT/DEL REPLY

    wlsalstj0321@naver.com 저는 지금 학생이구요! 제가 블로그를 운영하게 되면 IT, 정보보안,컴퓨터 쪽으로 제가 블로그를 운영하게 된거 같아요!!! 제가 블로그를 운영하게 되면 같이 정보도 공유하고 같이 소통할수 있었으면 좋겠어요!!! 제글 읽어주셔서 감사합니다!! 초대장이 없어서 블로그를 운영하지 못하고있어요 ㅜㅜㅠ 초대장 보내주시면 같이 소통도하고 지낼수 있을거 같아요!! 감사합니다