[4월 30일 1교시] 프로그램 개발 환경1
프로그래밍 단계
소스코드 -> 컴파일러 -> 오브젝트 코드 -> 링커(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 : 소스를 출력.