기초/C2011. 5. 2. 23:19

http://coffeenix.net/doc/develop/gdb.html 
http://www.gnu.org/software/gdb/


GDB 사용법

gdb는 GNU에서 만든 디버거로 굉장히 단순하고 직관적인 디버거다.

bugprg.c를 작성하고 컴파일 한다.

$ gcc -g -o bugprg bugprg.c

gdb를 사용하여 디버깅하기 위해서는 위 명령어와 같이 -g 옵션을 붙여야 한다.

-g 옵션을 붙이게 되면 컴파일되는 실행 파일에 여러 디버깅 정보가 삽입된다.

 

gdb 시작, 종료

실행 방법

$ gdb bugprg

$ gdb bugprg core.14998

$ gdb bugprg 14998

종료 방법

$ q

Ctrl + d

 

소스 보기

$ l : main 함수 기점

$ l 10 : 10행 기준

$ l func : func 함수

$ l file.c:func : file.c 파일의 func 함수

$ l file.c:10 : file.c 파일의 10행

출력되는 행의 수 변경

$ set listsize 20

 

브레이크 포인트

프로그램 실행

$ r

스택을 백트레이스

$ bt

브레이크 포인트 걸기

$ b func

$ b 10

$ b +2 : 현재 행에서 2개 행 이후

$ b -2 : 현재 행에서 2개 행 이전

$ b *0x8049000

$ b 10 if var == 0 : var 변수 값이 0일 때 브레이크

브레이크 포인트 지우기

$ cl func

$ cl 10

$ d : 모든 브레이크 포인트 지움

현재 설정된 프레이크 포인트 보이기

$ info breakpoints

 

프로그램 수행

$ r

$ r arg : arg 인자로 프로그램 수행

프로그램 종료

$ k 

 

진행 명령어

$ s : 현재 행 수행 후 정지, 함수 호출 시 함수 내부로 들어감

$ n : 현재 행 수행 후 정지, 함수 호출 시 함수 수행 후 다음 행으로 감

$ c : 브레이크 포인트를 만날 때까지 계속 진행

$ u : 현재 루프를 빠져 나감

$ finish : 현재 함수를 수행하고 빠져 나감

$ return : 현재 함수를 수행하지 않고 빠져 나감

$ return 123 : 함수 수행 않고 리턴 값은 123


예  제
 

#include <stdio.h>


int main()

{

       int score;

       char grade = 'X';

       printf("Please enter examination score: ");

       scanf("%d", &score);

       if((100>=score)&&(90<=score))

       {

              grade ='A';

       }

       else if((90>score)&&(80<=score))

       {

              grade='B';

       }

       else if((80>score)&&(70<=score))

       {

              grade='C';

       }

       else if((70>score)&&(60<=score))

       {

              grade='D';

       }

       else if((60>score)&&(0<=score))

       {

              grade='F';

       }

       else

       {

              printf("Wrong Score \n");

       }

              printf("The grad is %c\n", grade);

       }





1. 컴파일후 실행

 




2. 브레이크 포인트 찾기위해 라인 출력




3. 포인트 지정 및 디버깅 시작

'기초 > C' 카테고리의 다른 글

분할컴파일  (0) 2011.05.11
c언어 포인터의 자료별 접근  (0) 2011.05.09
포인터 형변환  (0) 2011.05.06
포인트 안쓰고 포인트사용하기  (0) 2011.05.06
for 문  (1) 2011.05.03
Posted by ICT 기술 블로그