컴퓨터 공부/Advanced UNIX System Programming

[4월 30일 1교시] 프로그램 개발 환경1

려리군 2009. 4. 30. 09:33

프로그래밍 단계

소스코드 -> 컴파일러 -> 오브젝트 코드 -> 링커(startup code, library code 포함)-> 실행가능한 코드

startup code : main code를 수행할 수 있도록 하는 code

컴파일러 세부기능: 전처리기 -> 컴파일 -> 어셈블


GCC C 컴파일러

옵션

-c : 소스파일을 컴파일하고 어셈블한다. 

-S : 컴파일하고 어셈블 파일 생성

-o filename : 출력으로 filename으로 설정한다. (이 옵션이 없으면 a.out 생성)

-g : 디버깅 정보 생성 (gdb 실행 필요)

-llibrary : 링킹할 때 library라는 이름의 라이브러리를 사용한다.

-Ldir : '-l'을 검색하기 위한 디렉터리 목록으로 디렉터리 dir을 추가한다.

-Idir : 헤더파일을 검색하기 위한 디렉터리 목록으로 디렉터리 dir을 추가한다. 

         참고) #include <???>

-O : 최적화

-Dmacro : 정의로써 문자열 "1"로 매크로인 macro로 정의한다.

         참고) #define    macro    1


GDB Debugger

기능

 - 다른 프로그램을 수행 가능.

 - breakpoint : 지정된 위치에서 수행을 멈춤.

 - 프로그램이 정지했을 때, 상태 확인 가능.

 - bug를 임시로 수정 가능.

사용법

 - 컴파일 시 -g옵션 필요.

    예) gcc -g myfile.c -o exec_myfile

 - gdb [exec_myfile]

종료

 - Ctrl+D 혹은 quit입력

※ 빈 줄은 이전 명령어의 반복을 의미(enter만 입력한 경우. 모든 경우에 대해서는 아님.)


실행관련 명령어

set args [arglist]

 - [argument를] 설정. 

 - arglist가 없으면 argument를 없애는 기능 수행.


show args :현재 argument를 보여주는 기능.


run [arglist] : [argument를 포함하여] 프로그램 실행.


breakpoint관련 명령어

break [function|linenum|+offset|-offset] : breakpoint를 설정. 

clear [function|linenum] : breakpoint 해제

delete [breakpoint linenum] : breakpoint 해제. linenum을 지정하지 않으면 전체 breakpoint가 삭제된다.

info break : 현재 설정된 breakpoint를 보여준다.


프로그램 진행

continue : 다음 breakpoint까지 진행.

step : 한 줄 진행. 함수를 만나면 함수 속으로(Visual studio의 step into)

next : 한 줄 진행. (Visual studio의 step over)

kill : 프로그램 수행 종료


데이터 내용 출력

print : 현 상태에서 변수 값 출력

display : 설정된 변수의 값을 반복하여 출력.

list : 소스를 출력.