1 분 소요

실행중이 process 디버깅

gdb [program] [PID]

#gdb
(gdb)attach [PID]

프로세스 연결 해제
(gdb) detach


Core dump file 이용한 디버깅
gdb [실행파일] [core dump 파일명]

build 시 -g 0O option을 준다.

시작은…

gdb a.out 으로 gdb환경으로 들어간다.

run : a.out을 실행한다.

list(l) : source code를 보여준다.

break (b) : 특정 라인이나 함수에 break를 건다.

where : break 걸린 이후 stack을 보여준다.

where full : 지역변수까지 표시해줌

s : break 걸린후에 step 그러니까 한라인씩 실행시킨다.

backtrace (bt) : 현재 call stack을 보여준다.

frame 3  한다면… bt로 봤던 여러 스택중, 3번 스택으로 이동하게 되겠다.

up  한다면… 한단계 상위 스택 프레임으로 이동

down 한다면… 한단계 하위 스택 프레임으로 이동 한다.

info locals : 현재 상태에서의 지역변수 출력

info variables : 현재 상태에서의 전역변수 리스트 출력

info frame :  현재 상태의 stack 정보를 보여준다.

p (printf) : 개별 변수 출력

display i : 변수 i값을 보여준다.

[펌]http://psyoblade.egloos.com/2653919 (이글루스 블로그, 서버 종료)

  1. 우선 컴파일 시에 디버깅 정보를 담아야 한다.
     gcc -g -o [프로그램명] [소스파일명]
     디버깅 옵션인 -g 으로 컴파일하며, 최적화 옵션인 -O 은 주지 않도록 한다.

  2. 실행방법
     gdb [프로그램명]
     gdb [프로그램명] [core파일명]

  3. 종료방법
     q
     Ctrl + d

  4. 소스 찾아가기 (list)
     l   : main 함수를 기점으로 소스의 내용이 출력된다
     l 10  : 10 행 주변의 소스가 출력되는데 10 - 5 행부터 10 + 5행까지 총 10행이 출려된다.
     l func  : func 함수의 소스를 출력
     l -5  : 기본값으로 10줄이 출력된다고 가정하고, 다음에 출력될 라인이 11라인이라면, 10(마지막라인) - 5 라인을 중심으로 출력된다. 즉, 그대로 1~10라인이 출력된다.
     l a.c:func : a.c 파일의 func 함수부분을 출력
     l a.c:10 : a.c 파일의 10행을 기준으로 출력

  5. 옵션
     set listsize 20 : 한번에 출력하는 행의 갯수를 20개로 늘린다.
     Enter  : 마지막으로 수행한 명령어를 다시 수행한다

  6. 프로그램 실행, 종료 (run, kill)
     r   : 프로그램 수행 (재시작)
     r arg1 arg2 : arg1과 arg2를 인자로 프로그램 수행
     k   : 프로그램 수행종료

  7. 역추적하기 (backtrace)
     bt   : 오류가 발생한 함수를 역으로 찾아간다.

  8. 중단점 사용하기 (breakpoint, temporary breakpoint)\

http://blog.daum.net/aswip/8429607

GDB 사용법 정리 잘된 싸이트

GDB를 이용한 디버깅 : http://coffeenix.net/doc/develop/gdb.html

GDB 잘쓰기 : http://kldp.org/node/71806

                   http://kldp.org/node/87778

gdb) http://www.gnu.org/software/gdb/gdb.html

gdb로 디버깅) http://www.sourceware.org/gdb/current/onlinedocs/gdb.html#SEC_Top

ddd) https://www.gnu.org/software/ddd/

인사이트) https://sourceware.org/insight/

\