#title gdb 사용법 & Tips ## https://sites.google.com/site/taesaza0/etc/gdbleultonghandibeogingttalahagi [[TableOfContents]] == 기본 명령 == '''gdb 실행 + 프로그램 실행''' {{{$ gdb }}} '''gdb 실행 + 프로그램 실행 with args''' {{{$ gdb --args [arg1] [arg2] ... }}} '''프로그램 종료''' {{{(gdb) kill }}} '''gdb 종료''' {{{(gdb) quit }}} '''도움말''' {{{(gdb) help }}} '''프로그램 속행''' {{{(gdb) continue (gdb) c }}} '''소스 라인 단위 트레이스''' {{{(gdb) next (gdb) n (gdb) step (gdb) s (gdb) finish # 현재 함수를 수행하고 빠져 나감 (gdb) return # 현재 함수를 수행하지 않고 빠져 나감 (gdb) return 123 # 현재 함수를 수행하지 않고 빠져 나감, 단 리턴 값 123으로 }}} '''Instruction 단위 트레이스''' {{{(gdb) nexti (gdb) stepi}}} '''변수 확인''' {{{(gdb) print (gdb) p }}} '''변수 변경''' {{{(gdb) set = or (gdb) set var = }}} '''코드 실행''' {{{(gdb) call () }}} '''콜스택 보기''' {{{(gdb) backtrace }}} '''콜스택에서 프레임 선택''' {{{(gdb) frame }}} '''스택 정보, 지역 변수, 인자 출력''' {{{(gdb) info frame (gdb) info locals (gdb) info args}}} '''소스 출력''' {{{(gdb) list (gdb) l}}} '''브레이크포인트 설정''' {{{(gdb) break or (gdb) break : or (gdb) break or (gdb) break ::}}} ''' 조건으로 브레이크 설정''' {{{(gdb) (gdb) b if ex) (gdb) b 95 if cnt == 10 }}} '''임시 브레이크''' {{{(gdb) tbreak }}} '''브레이크포인트 보기''' {{{(gdb) info breakpoints }}} '''브레이크포인트 활성/비활성''' {{{(gdb) enable }}} {{{(gdb) disable }}} '''브레이크포인트 삭제''' {{{(gdb) clear (gdb) cl a.c:func # a.c 파일의 func함수의 브레이크 포인트 지움 (gdb) delete }}} '''브레이크포인트 일정 회수 건너뛰기''' {{{(gdb) ignore }}} '''변수의 쓰기 Watchpoint 설정''' {{{(gdb) watch }}} '''변수의 읽기 Watchpoint 설정''' {{{(gdb) rwatch }}} '''변수의 읽기/쓰기 Watchpoint 설정''' {{{(gdb) awatch }}} '''Watchpoint 비활성화''' {{{(gdb) disable (Watchpoint는 info breakpoints 명령어로 확인 가능)}}} '''메모리 확인''' {{{(gdb) x/ [
or ] ( in s(string), c(character), 4c(4 characters), t(32bits binaries), 3x(24bytes in hex)}}} '''레지스터 확인''' {{{(gdb) info registers }}} '''코어 덤프 파일 디버그''' {{{$ gdb (gdb) core core}}} '''디스어셈블''' {{{(gdb) disassemble [
or ] }}} == Tips == ==== 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 [+ | -] <#lines> (gdb) winheight src + 5 }}} layout 닫는 방법 [[code(Ctrl-x + a)]] ==== set print pretty on ==== print *my_struct_pointer 시 struct member를 보기 좋게 표시. {{{(gdb) set print pretty on }}} ---- CategoryDocument