gdb cheat sheet

By | 2022년 5월 26일
Table of Contents

gdb cheat sheet

참조

실행하기

gdb -help           도움말 표시
gdb object          프로그램 디버깅 시작
gdb object pid      실행중인 프로세스 디버깅

도움말

# alias
help           h
(gdb) help              도움말 항목
(gdb) help running      특정 항목의 상세 명령목록
(gdb) help run          run 명령어에 대한 도움말
(gdb) help info         info 명령어에 대한 도움말
(gdb) help info line    info 명령어의 상세명령에 대한 도움말
(gdb) help show         show 명령어에 대한 도움말

브레이크 포인트(bpt)

# alias
break          b
info           i
delete         d
clear          cl
disable        dis
enable         en
tbreak         tb
condition      cond
watch          wa
breakpoints    b
(gdb) break main       특정 함수에 브레이크 포인트(bpt) 지정
(gdb) break 101        특정 라인에 bpt 지정
(gdb) break line if var == 7      특정 변수가 특정값일 때 bpt 활성화
(gdb) break basic.c:101       특정 파일의 특정 라인(또는 함수)에 bpt 지정
(gdb) info breakpoints        bpt 목록 표시
(gdb) delete 1         번호로 bpt 삭제
(gdb) delete           모든 bpt 삭제
(gdb) clear            현재 라인의 bpt삭제
(gdb) clear function   특정 함수에 걸린 bpt 삭제
(gdb) clear line       라인 번호로 bpt 삭제
(gdb) disable 2        번호로 bpt 끄기(삭제 XXX)
(gdb) enable 2         번호로 bpt 켜기
(gdb) tbreak function|line             임시 bpt 설정
(gdb) commands break-no ... end        bpt 번호에 gdb 명령 설정
(gdb) ignore break-no count            bpt 번호에 N-1 번만큼 무시
(gdb) condition break-no expression    조건이 참인 경우만 bpt 번호 활성화
(gdb) condition 2 i == 20              예제: i 가 20 인 경우 bpt 활성화
(gdb) watch expression                 변수에 software watchpoint 할당
(gdb) info watchpoints                 현재 watchpoints 조회

프로그램 실행/종료

# alias
run            r
step           s
next           n
continue       cont
kill           k
(gdb) run                         프로그램 실행
(gdb) run args redirection        파라미터를 포함해 프로그램 실행
(gdb) set args args...            파라미터 설정
(gdb) show args        파라미터 표시
(gdb) cont             다음 bpt 까지 프로그램 실행
(gdb) step             현재라인 실행, 함수가 있으면 함수 안으로 진행
(gdb) step count       count 번만큼 step 실행
(gdb) next             step 실행, 함수가 있으면 함수 다음 라인으로 진행
(gdb) next count       count 번만큼 next 실행
(gdb) CTRL-C           프로그램 종료
(gdb) attach process-id        실행중인 프로세스에 연결
(gdb) detach           연결 해제
(gdb) finish           현재 함수의 실행 종료
(gdb) kill             실행중인 프로그램 종료

스택조회

(gdb) bt            스택 조회
(gdb) frame         현재 실행 위치 표시
(gdb) up            상위 스택으로 이동(main 으로 이동)
(gdb) down          하위 스택으로 이동(main 에서 멀어짐)
(gdb) info locals   현재 프레임의 변수 표시
(gdb) info args     함수 파라미터 표시

소스 보기

# alias
list           l
(gdb) list 101           101 라인부터 10 라인 표시
(gdb) list 1,10          1 에서 10 라인까지 표시
(gdb) list main          함수 근처의 소스 표시
(gdb) list basic.c:main  특정파일의 특정 함수 소스 표시
(gdb) list -             이전 10 라인 표시

데이타 조회

# alias
print          p
(gdb) print expression           expression 출력, 변수 히스토리에 추가
(gdb) print/x expressionR        hex 로 출력
(gdb) print array[i]@count       변수 범위 출력
(gdb) print $                    마지막 변수 출력
(gdb) print *$->next             리스트 변수 출력
(gdb) print $1                   변수 히스토리의 1번째 값 출력
(gdb) info locals                지역 변수 출력
(gdb) whatis expression          expression 의 타입 출력
(gdb) set variable = expression  변수의 값 변경
(gdb) display expression         변수의 값 지속적으로 출력
(gdb) undisplay                  display 삭제
(gdb) info display               display 목록 표시
(gdb) show values                변수 히스토리 출력

기타

# alias
quit           q
(gdb) define command ... end        사용자 함수 생성
*(gdb) RETURN                       마지막 명령 반복
*(gdb) shell command args           shell 명령 실행
*(gdb) source file                  파일에서 gdb 명령 읽어오기
*(gdb) quit                         gdb 종료

답글 남기기