• 검색 결과가 없습니다.

8주 프로그래밍 도구

N/A
N/A
Protected

Academic year: 2022

Share "8주 프로그래밍 도구"

Copied!
12
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

8주 프로그래밍 도구

교재: 유닉스 리눅스 사용에서 프로그래밍까지 저자: 창병모

출판사: 생능출판사 2012년 발행

리눅스시스템

(2)

gcc 컴파일러

• gcc(GNU cc) 컴파일러

$ gcc [-옵션] 파일

옵 션 의 미

-c 단순히 컴파일만 한다. 즉, 링크는 하지 않고 오브젝트 파일만 만든다.

-o output 파일명을 지정한다. 이 옵션으로 output 파일명을 주지 않으면 default로 a.out 이라는 실행 파일 을 만든다.

-I 프로그램 내에 사용된 헤더 파일이 탐색 경로 안에 없을 때 수동으로 헤더 파일이 있는 디렉터리를 정해준 다.

-L dir -l을 위해 찾은 디렉터리의 리스트에 dir 디렉터리를 더한다.

-l library 링크할 때 library라는 라이브러리를 찾느다.

-s 컴파일을 해서 실행파일을 만들면 실행 파일 안에 심볼 테이블이 들어 있어 실행 파일의 크기가 커진다.

이 심볼 테이블은 실행과는 관계가 없으므로 -s 옵션을 주어 실행 파일에서 심볼릭 테이블을 삭제한다.

-O 코드 최적화를 위한 코드이다. O0이면 최적화를 하지 않는다는 뜻이고 O2이면 가장 많이 최적화를 한다 는 것을 의미한다.

-g 디버깅 정보를 포함시킨다.

(3)

컴파일러 버전 확인

• gcc –v

(4)

예제

• gcc test.c 실행: ./a.out

• gcc –o test test.c 실행: ./test

#include <stdio.h>

main ( void )

{ printf( "Hello, Linux!\n" );

return 0;

}

(5)

다중 모듈 프로그램

• 단일 모듈 프로그램

– 코드의 재사용(reuse)이 어렵고,

– 여러 사람이 참여하는 프로그래밍이 어렵다

– 예를 들어 다른 프로그램에서 copy 함수를 재사용하기 힘들다

• 다중 모듈 프로그램

– 여러 개의 .c 파일들로 이루어진 프로그램

– 일반적으로 복잡하며 대단위 프로그램인 경우에 적합

(6)

make 시스템의 필요성

• 다중 모듈 프로그램을 구성하는 일부 파일이 변경된 경우?

– 변경된 파일만 컴파일하고, 파일들의 의존 관계에 따라서 필요한 파일만 다시 컴파일하여 실행 파일을 만들면 좋다.

• 예

– copy.c 소스 코드를 수정 – 목적 파일 copy.o 생성 – 실행파일을 생성

• make 시스템

– 대규모 프로그램의 경우에는 헤더, 소스 파일, 목적 파일, 실행 파일의 모든 관계를 기억하고 체계적으로 관리하는 것이 필요 – make 시스템을 이용하여 효과적으로 작업

(7)

Makefile

• Makefile

– 실행 파일을 만들기 위해 필요한 파일들과 그 들 사이의 의존 관계, 만드는 방법 등을 기술 – make 시스템은 Makefile을 이용하여 파일의

상호 의존 관계를 파악하여 실행 파일을 쉽게 다시 만듦

• $ make [-f 메이크파일이름]

– 옵션이 없으면 Makefile 혹은 makefile을 사용

(8)

gdb

• 가장 대표적인 디버거

– GNU debugger(gdb)

• gdb 주요 기능

– 정지점(breakpoint) 설정 – 한 줄씩 실행

– 변수 접근 및 수정 – 함수 탐색

– 추적(tracing)

• gdb 사용을 위한 컴파 일

– -g 옵션을 이용하여 컴파 일

$ gcc -g -o test test.c – 다중 모듈 프로그램

$ gcc -g -o main main.c copy.c

• gdb 실행

$ gdb [실행파일]

(9)

gdb 기능

• 소스보기 : l(ist)

– l [줄번호] 지정된 줄을 프린트 – l [파일명]:[함수명] 지정된 함수를 프린트

– set listsize n 출력되는 줄의 수를 n으로 변경

(10)

gdb 기능

• 정지점 : b(reak), clear, d(elete)

– b [파일:]함수 파일의 함수 시작부분에 정지점 설정 – b n n번 줄에 정지점을 설정

– b +n 현재 줄에서 n개 줄 이후에 정지점 설정 – b -n 현재 줄에서 n개 줄 이전에 정지점 설정 – info b 현재 설정된 정지점을 출력

– clear 줄번호 해당 정지점을 삭제 – d 모든 정지점을 삭제

(11)

gdb 기능

• 프로그램 수행

r(un) 인수 명령줄 인수를 받아 프로그램 수행 k(ill) 프로그램 수행 강제 종료

n(ext) 멈춘 지점에서 다음 줄을 수행하고 멈춤

s(tep) n과 같은 기능 함수호출 시 함수내부로 진입 c(ontinue) 정지점을 만날 때 까지 계속 수행

u 반복문에서 빠져나옴

finish 현재 수행하는 함수의 끝으로 이동 return 현재 수행중인 함수를 빠져나옴

quit 종료

(gdb) r

(12)

gdb 기능

• 변수 값 프린트: p(rint)

– p [변수명] 해당 변수 값 프린트

– p 파일명::[변수명] 특정 파일의 전역변수 프린트 – p [함수명]::[변수명] 특정 함수의 정적 변수

프린트

– info locals 현재 상태의 지역변수 리스트

(gdb) p sum (gdb) n

(gdb) n

(gdb) p

참조

관련 문서

-부풀러 진 자기(inflated self)와 쭈그러진 자기(deflated self) -존재한다는 것은 중독에 길들여진다는 것이다... Korean Association Against Drug

신체적인 장애나 정서적인 혼란과 같이 특정의 상품 이나 서비스가 필요한 개인에 대한 전문가의 판단에 의존, 욕구의 기술적 진단기준에 기반을 둔 개인적인 할당에

스피치 경험 부족한 사람에게 유혹적인 방법이지만 청중 반응에 적응할 수 없기 때문에 유능한 연사는 절대로 채택하지 않는다..  대본 낭독-실행 노력이 별로 필요하지 않고 불안증도

검정방법을 결정하고 실행(검정통계량 계산)한다... d.f.:

•데이터 수집과 관련된 도구 와 절차에 대해 사전 조사를 실시한다.

▪ 공급업체 관계 개선, 공동 프로세스 개선, 사양개선 등을 통한 구매원가절감 실현이 매우 필요한 물품. ▪ 연간 구매금액이 높으며 상대적으로

◈ 데이터 필드로 기술된 데이터 타입 (data type)과 이 데이터 타입들 간의 관계를 이용하여 현실 세계를 표현하는 방법. 간의

이와 함께, 사회적 기회로서 지도자와 청소년간의 상호작용으로 이루 어지는 지도활동은 근본적으로 하나의 가정으로 전개되어야 한다. 그것은 프로그램 활동에 있어서 청소년에 대한