gdb 사용법 & Tips



1. 기본 명령 #

gdb 실행 + 프로그램 실행
$ gdb <filename>
gdb 실행 + 프로그램 실행 with args
$ gdb --args <filename> [arg1] [arg2] ...
프로그램 종료
(gdb) kill
gdb 종료
(gdb) quit
도움말
(gdb) help

프로그램 속행
(gdb) continue
소스 라인 단위 트레이스
(gdb) next
(gdb) n
(gdb) step
(gdb) s
(gdb) finish # 현재 함수를 수행하고 빠져 나감
(gdb) return # 현재 함수를 수행하지 않고 빠져 나감
(gdb) return 123 # 현재 함수를 수행하지 않고 빠져 나감, 단 리턴 값 123으로
Instruction 단위 트레이스
(gdb) nexti
(gdb) stepi
변수 확인
(gdb) print <var>
(gdb) p <var>
변수 변경
(gdb) set <var> = <value>
or (gdb) set var <var> = <value>
코드 실행
(gdb) call <func_name>(<args>)

콜스택 보기
(gdb) backtrace
콜스택에서 프레임 선택
(gdb) frame <frame_num>

스택 정보, 지역 변수, 인자 출력
(gdb) info frame
(gdb) info locals
(gdb) info args
소스 출력
(gdb) list
(gdb) l

브레이크포인트 설정
(gdb) break <line_num>
or (gdb) break <source_file>:<line_num>
or (gdb) break <func_name>
or (gdb) break <class>::<func_proto>
조건으로 브레이크 설정
(gdb) (gdb) b <line_num> if <condition>
ex) (gdb) b 95 if cnt == 10
임시 브레이크
(gdb) tbreak
브레이크포인트 보기
(gdb) info breakpoints
브레이크포인트 활성/비활성
(gdb) enable <breakpnt_num>
(gdb) disable <breakpnt_num>
브레이크포인트 삭제
(gdb) clear <line_num>
(gdb) cl a.c:func # a.c 파일의 func함수의 브레이크 포인트 지움
(gdb) delete <breakpnt_num>
브레이크포인트 일정 회수 건너뛰기
(gdb) ignore <breakpnt_num> <number>

변수의 쓰기 Watchpoint 설정
(gdb) watch <var>
변수의 읽기 Watchpoint 설정
(gdb) rwatch <var>
변수의 읽기/쓰기 Watchpoint 설정
(gdb) awatch <var>
Watchpoint 비활성화
(gdb) disable <watchpoint_num>
(Watchpoint는 info breakpoints 명령어로 확인 가능)

메모리 확인
(gdb) x/<FTM> [<address> or <symbol>]
(<FTM> in s(string), c(character), 4c(4 characters), t(32bits binaries), 3x(24bytes in hex)
레지스터 확인
(gdb) info registers
코어 덤프 파일 디버그
$ gdb <coredumped_file>
(gdb) core core
디스어셈블
(gdb) disassemble [<address> or <symbol>]

2. Tips #

2.1. layout src #

소스 코드와 함께 디버깅
(gdb) layout src
기타 레이아웃
(gdb) help layout
(gdb) layout src # 소스 코드와 명령 창
(gdb) layout asm # 디스어셈블리와 명령 창
(gdb) layout split # 소스 코드와 디스어셈블리와 명령 창
(gdb) layout resg # 레지스터 창
(gdb) layout prev # 이전 모드
(gdb) layout next # 다음 모드
창 크기 변경
# winheight <win_name> [+ | -] <#lines>
(gdb) winheight src + 5
layout 닫는 방법
Ctrl-x + a

2.2. set print pretty on #

print *my_struct_pointer 시 struct member를 보기 좋게 표시.
(gdb) set print pretty on


이 글에는 0 개의 댓글이 있습니다.