3. C언어 프로그래밍 환경 - Make system , gdb

김동웅·2021년 9월 9일
0

UNIX

목록 보기
4/14

Make System 이란?

  • 대규모 프로그램의 경우에는 헤더, 소스파일,목적파일,실행파일의 모든 관계를 기억하고 체계적으로 관리하는 것이 필요하다.
  • make system을 이용하여 효과적으로 작업
ex) 매번 변경된 파일을 다시 컴파일하여 목적파일을 만들고, 이 목적파일을 사용한 다른 목적파일과 다시 링크해야함.

Makefile

  • 실행 파일을 만들기 위해 필요한 파일들과 만드는 방법을 기술

  • make system은 파일의 상호 의존 관계를 파악하여, 파일을
    수정하더라도 실행 파일을 다시 쉽게 만듦.

  • $ make [-f 메이크파일]
    옵션이 없으면 Makefile 혹은 makefile을 사용

Makefile의 구성

  • 대상리스트: 의존리스트
    \t : 명령리스트

자세한건 하단 링크 참고

https://bowbowbow.tistory.com/12#make%EB%A5%BC-%EC%93%B0%EB%8A%94-%EC%9D%B4%EC%9C%A0


디버거(gdb)

가장 대표적인 디버거 : GNU debugger(gdb)

  • gdb 주요 기능
    정지점(breakpoint) 설정,
    한 줄씩 실행,
    변수 접근 및 수정,
    함수 탐색,
    추적(tracing)

  • gdb 사용을 위한 컴파일
    -g 옵션을 이용하여 컴파일
    $ gcc -g -o longest longest.c

  • 다중 모듈 프로그램
    $ gcc -g -o main main.c
    copy.c

  • gdb 실행
    $ gdb [실행파일]

gdb 기능

  • 소스보기 : l(list)

    • l [줄번호] ▶ 지정된 줄을 프린트
    • l [파일명]:[함수명] ▶ 지정된 함수를 프린트
    • set listsize n ▶ 출력되는 줄의 수를 n으로 변경
  • 정지점 : b(reak), clear, d(elete)

    • b [파일:]함수 ▶ 파일의 함수 시작부분에 정지점 설정
    • b n ▶ n번 줄에 정지점을 설정
    • b +n ▶ 현재 줄에서 n개 줄 이후에 정지점 설정
    • b -n ▶ 현재 줄에서 n개 줄 이전에 정지점 설정
    • info b ▶ 현재 설정된 정지점을 출력
    • clear ▶ 줄번호 해당 정지점을 삭제
    • d ▶ 모든 정지점을 삭제
  • 프로그램 수행

    • r(un) ▶ 인수 명령줄 인수를 받아 프로그램 수행
    • k(ill) ▶ 프로그램 수행 강제 종료
    • n(ext) ▶ 멈춘 지점에서 다음 줄을 수행하고 멈춤
    • s(tep) ▶ n과 같은 기능 함수호출 시 함수내부로 진입
    • c(ontinue) ▶ 정지점을 만날 때 까지 계속 수행
    • u ▶ 반복문에서 빠져나옴
    • finish ▶ 현재 수행하는 함수의 끝으로 이동
    • return ▶ 현재 수행중인 함수를 빠져나옴
    • quit ▶ 종료
  • 변수 값 프린트: p(rint)
    • p [변수명] ▶ 해당 변수 값 프린트
    • p 파일명::[변수명] ▶ 특정 파일의 전역변수 프린트
    • p [함수명]::[변수명] ▶ 특정 함수의 정적 변수 프린트
    • info locals ▶ 현재 상태의 지역변수 리스트

0개의 댓글

관련 채용 정보