컴퓨터활용/유닉스

gdb 사용법

멜번초이 2016. 7. 19. 00:17

흔히 유닉스 C 프로그램을 개발하는 프로젝트에서 코어덤프가 발생하게 되면 gdb 를 사용하게 된다.  gdb 를 이용하면 프로그램이 어디를 어떻게 흘러갔는지 스택정보를 보여주게 되므로 코어가 발생된 위치를 추측하는데 도움이 된다.


대부분의 gdb 사용법은 인터넷에 나와 있는 것과 동일하다. 그런데 흔히 사용하는 명령은 bt (where) 정도 밖에 없다. 이런 bt 명령을 치기 위해서 file 코어파일 을 이용하여 코어가 발생한 실행 파일을 알아 내고 다시 gdb 실행파일 코어파일 을 하여 gdb 모드로 들어가서 bt 명령을 입력하게 된다.  이런 과정을 한방에 할 수 있는 쉘을 작성해 놓고 사용하면 편하다.


보통  gdb [프로그램명] [코어파일명]  이렇게 실행한다.  아래 쉘이름이 gdb.sh 라고 하면 gdb.sh [코어파일명] 과 같이 실행하면 된다.


COREFILE=$1

SVRNAME=`file $COREFILE | awk -F "'" '{print $2}'`

echo "bt" | gdb -objectdir=/objectdir -objectdir=/bin/obj  $SVRNAME  $COREFILE quit


여기서 -objectdir는 실행파일이 물고 있는 .o 파일들이 어디에 있는지 알려 주는 것인데 gdb가 프로그램들의 내부함수나 라인번호를 찍어줄 수 있으려면 .o 파일이 어디에 있는 지 알고 있어야 한다. 


<HP-UX 에서 실행할 때를 기준으로 작성된 글임>


<2007년6월>


함께보면 좋은 글 :  AIX dbx 사용 core 분석