반응형

gdb 사용하기(디버깅)

C/CPP로 작성한 프로그램을 실시간 디버깅할 때 사용한다.
또는 에러 발생으로 core dump가 떨어지면 그 상태의 메모리 정보를 로딩하여 디버깅도 할 수 있다.

- gdb 실행
gdb [core]나 [실행 파일]
gdb a.out core
gdb a.out 1234 (attach to pid)
r [parameter]

- 파라미터
r [parameters]
l (file:function or line#) ; 소스


- break
break [function name]
break function1

- 다음 코드로 계속 진행
c ; continue

n ; next (step over)
s ; step (step into)

- bt ; back trace
call 스택 보기. 어느 함수에서 죽었는지 확인 가능. 디버깅 정보가 포함되어 있으면 코드 라인까지 나온다.

-q ; quit




1. 먼저 컴파일시 -g 옵션을 주어, 디버그 정보가 남도록 한다.

gdb [program]

2. 소스보기
l (list)  ; 파일:함수명, 함수명, 라인번호

set listsize 20 (20줄씩 나오게한다.)
l main
l 25
l file.c:func:

3. 실행
r (run) [arg1] [arg2] ...
k (kill) ; 프로그램 종료
s (step) ; trace into.
n (next) ; next line. (function skip...)
c (continue)
u (until) ; 현재 루프를 빠져나감
finish ; 현재 함수를 수행하고 빠져나감
return ; 현재 함수를 수행하지 않고 빠져나감.
return (x) ; 리턴함.


4. BP (break point)
b 19
b main
b file.c:10
b -2
b 10 if tmp==0  ; tmp가 0일때 10라인에 bp 설정

cl hello   ; BP 삭제
cl 10
cl file.c:20
d  ; BP 모두 해제

info breakpoints ; BP 목록
줄여서 i b  (TAB키 사용 가능)
enable 2
disable 2

5. w (watch)
watch i ; i값이 변경될때마다 알려줌. bp

info locals ; 지역변수 보기
info variables ; 전역 변수 리스트
p (printf) ; 개별 변수 보기

p *p ; 포인터 값 보기
p $eax ; 레지스터 값

display i ; 변수값을 항상 display
undisplay i;

6. 스택
bt (backtrace) ; 스택 출력
info f (frame)
info args
info locals

bt
frame 3
up ; 상위 스택 프레임으로 이동
down ; 하위 스택 프로임으로 이동



+ 쓰레드 정보
info threads

-디버깅 쓰레드 전환
t 쓰레드인덱스번호







'Develop > C&CPP' 카테고리의 다른 글

Vector 3  (0) 2018.05.23
Vector 2  (0) 2018.05.18
Vector 1  (0) 2018.05.16
정규식으로 스트링 일부 추출하기  (0) 2018.03.10
mutex 동기화 예제  (1) 2018.03.06

+ Recent posts