본문 바로가기

Programming

gdb 정리

gdb 기본 명령어

시작
gdb [프로그램명]  ( 예 : gdb bugprg )
gdb [프로그램명][core파일명] ( 예 : gdb bugprg core.14998 )
gdb [프로그램명][실행중인 프로세스PID] ( 예 : gdb bugprg 14998 )


종료
q
ctrl + d


소스보기
l main 함수 기점으로 소스출력
l 10 10행을 기준으로 출력
l func func 함수의 소스를 출력
l - 출력된 행의 이전행 출력
l file.c:func: file.c 파일의 func 함수 부분 출력
l file.c:10: file.c 파일의 10을 기준으로 출력
set listsize 20 출력되는 행수 20으로 변경



브레이크 포인트 생성
r 프로그램을 실행
( r을 쳐서 실행후 메시지 우선확인후 bt명령으로 
  스텍 백트레이스 후 문제 되는 함수 확인!! )
bt 스텍 백트레이스
b func func 함수의 시작부분에  설정
b 10 10행에 설정
b file.c:func file.c 파일의 func 함수에 설정
b file.c:10 file.c 파일의 10행에 설정
b +2 현재 행에서 2개 행 이후 지점 설정
b -2 현재 행에서 2개 행 이전 지점 설정
b *0x8049000 0x8049000 주소에 설정( 어셈블리로 디버깅시 )
b 10 if val == 0 10행에 설정하는데 var변수 값이 0일때

info breakpoints 브레이크 포인트 정보 출력( 고유번호, 위치 )
condition [N] val == 0  N번째 브레이크 포인트에 val 이 0일때
tb 한번만 브레이크 포인트 걸고 싶을때



브레이크 포인트 삭제
cl func
cl 10
cl file.c:func
cl file.c:10
d 모든 브레이크 포인트 삭제

disable 2 2번(고유번호) 임시 비활성화
enable 2 2번(고유번호) 다시 활성화

프로그램 수행
r 프로그램 수행(수행중일때 재시작)
k 프로그램 종료
r arg1 arg2 arg1, arg2인자 추가
s 한줄씩 수행 - 함수내부들어감 ( vc++ F11키 )  
s 5 s를 5번 입력한것과 동일
n 한줄씩 수행 - 함수내부들어가지않음 ( vc++ F10키 )
n 5 n를 5번 입력한것과 동일
c 브레이크 포인트 만날때까지 수행 ( vc++ F5 )

함수 내부에서 진행
u 현재 루프 빠져 나감
finish 현재 함수를 수행하고 빠져나감
return 현재 함수를 수행하지 않고 빠져나감
return 123 리턴 값은 123으로 수행하지 않고 빠져나감
si 현재의 인스트럭션을 수행, 함수내부 들어감
ni 현재의 인스트럭션을 수행, 함수내부 들어가지 않음



























'Programming' 카테고리의 다른 글

sql server db 복원  (0) 2012.01.19
sql tip 정리  (0) 2012.01.18
linux 자주쓰는 명령어..정리  (0) 2012.01.18
리눅스 사용자 관련 명령어  (0) 2011.03.03
CPPUNIT 테스트  (0) 2011.01.07