반응형
gdb 사용하기(디버깅)
C/CPP로 작성한 프로그램을 실시간 디버깅할 때 사용한다.
또는 에러 발생으로 core dump가 떨어지면 그 상태의 메모리 정보를 로딩하여 디버깅도 할 수 있다.
- gdb 실행
gdb [core]나 [실행 파일]
gdb a.out core
gdb a.out 1234 (attach to pid)
r [parameter]
- 파라미터
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 |