잊을까봐 기록한다아아

컴파일
    $ gcc -g <source_file> -o <exec_file>
gdb 실행
    $ gdb <source_file>
gdb 종료
    (gdb) quit
도움말
    (gdb) help

프로그램 실행
    (gdb) run <arg> "<arg>"…
프로그램 종료
    (gdb) kill

프로그램 중지
    CTRL+C
프로그램 속행 (재시작인가?)
    (gdb) continue
라인단위 트레이스
    (gdb) next
    (gdb) step
    (gdb) finish
변수 확인
    (gdb) print <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) break <line_num>
    or (gdb) break <source_file>:<line_num>
    or (gdb) break < func_name >
    or (gdb) break <class>::<func_proto>
임시 브레이크 (어떻게 쓰는 건지...)
    (gdb) tbreak
브레이크포인트 보기
    (gdb) info breakpoints
브레이크포인터 비활성화
    (gdb) disable <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) nexti
    (gdb) stepi
함수 디스어셈블
    (gdb) disassemble [<address> or <symbol>]


참고자료: RMS's gdb Debugger Tutorial, http://www.unknownroad.com/rtfm/gdbtut/gdbtoc.html
Posted by 배트
,