2016년 6월 13일 월요일

gdb 간단한 사용법

맨날 까먹는다... 자주 안써서 그런지...

gdb [bin name]
가장 흔한 실행방법... Break point 걸고 싶을때..

gdb [bin name] [core name]
core 파일 분석하고 싶을때... back trace라던가...

gdb [bin name] [pid number]
현재 돌아가는 pid에 붙어서 디버깅 할때.

run (r)
프로그램을 시작
quit, kill (k)
디버깅 종료

break (b)
break point 걸때
여러가지 방법이 있음
b aaa.c:this_method
aaa.c파일에 this_method 함수에 설정함
b CAaa::this_method
CAaa클래스에 this_method 함수에 설정
b aaa.c:10
aaa.c파일 10번째 줄에 설정
b +5
현재행에서 5번째 아래에 설정

info b            
현재 설정된 브레이크 포인트의 정보
info locals    
현재 상태의 지역변수 정보
info variables
현재 상태의 전역변수 정보
info registers
현재 레지스터 정보
info frame
현재 스택 프레임 정보
info args
현재 스택 프레임의 함수가 호출될때 인자
info catch
현재 스택 프레임의 함수내에 예외 핸들러
info signals
보낼 수 있는 시그널의 종류
info set
변경 가능한 환경설정 정보
info functions
함수 리스트

clear (cl)
break point 제거

cl 1
첫번째 break point 제거
cl CAaa::this_method
CAaa클래스에 this_method break point 제거
cl
모든 break point 제거

step (s)

s
현재행 수행 (함수가 나타나면 해당 함수로 진입)
s 10
10개행을 수행
n
현재행 수행 (함수가 나타나도 해당 함수를 실행후 넘어감)
n 10
위의 방식으로 10개행 수행

continue (c)
다음 break 만날때까지 진행

finish
현재함수를 실행하고 빠져나감
return
현재 함수를 마저 실행하지 않고 나감
return false
함수를 빠져나갈때 false를 return

watch bFlag
bFlag값이 변경될때마다 break point를 수행 (매우 편함)

p pStr
pStr의 값을 확인
p func
func 함수의 주소 확인
p tVal
tVal의 구조체 주소를 확인(내용을 보고 싶으면 포인터 * 붙이면됨)
display pVal
pVal값을 계속 퐈면에 표시

frame [숫자]
해당 frame으로 이동 (주로 core 분석할때)
up, down
frame을 올리고 내림

혹시 보고 싶은 var 의 길이가 너무 길때
set print elements 0

댓글 없음:

댓글 쓰기