티스토리 뷰

GCC 주요 옵션

 

-o : 컴파일 결과물의 이름을 지정할 수 있다.

# a.out 파일이 생성된다.
gcc hello.c

# hello 파일이 생성된다.
gcc hello.c -o hello

 

-w : 모든 경고 메시지를 숨긴다.

-Wall : 모든 경고 메시지를 보여준다.

-Werror : 경고 메시지를 에러로 출력한다.

gcc -w hello.c
gcc -Wall hello.c
gcc -Werror hello.c

 

-On (n은 정수)

-O 옵션은 컴파일러의 최적화 정도를 결정한다.

-O0 (default) : 최적화를 하지 않는다.

-O1 (or -O) : 1단계 최적화

-O2 : 2단계 최적화

-O3 : 3단계 최적화

gcc -O3 -o hello hello.c

 

-g

-g 옵션은 소스 레벨에서 디버깅이 가능하도록 도와준다. -g 옵션 역시ㅛ  3단계로 구분된다.

-g1, -g2 (-g), -g3 (-ggdb3)

 

 

GDB 주요 커맨드

gdb ./[program] : GDB를 시작한다.

gdb ./hello

 

run(r) [arguments] : GDB로 프로그램을 실행한다.

gdb run
gdb r test1 test2

 

backtrace(bt) : 스택을 보여준다.

gdb bt

 

list(l) [place] : 앞 뒤로 5줄씩 소스를 출력한다. [place]에는 함수명, 줄번호, 파일명:줄번호, 파일명:함수명 등이 다양하게 들어간다.

gdb list main
gdb l hello.c:16

 

break(b) [place] : 중단점을 지정한다. [place]에는 함수명, 줄번호, 파일명:줄번호, 파일명:함수명, if문 등이 다양하게 들어간다.

gdb -b main
gdb -b hello.c:5
gdb -b 30 if var == 0 # var 값이 0이면 30번째 줄에 중단점 설정

 

info break (i b) : 중단점들의 정보를 출력한다.

gdb info break
gdb info b
gdb i b

 

delete(d) [N] : N번 중단점을 삭제한다. info b 명령어를 통해 N을 알 수 있다. N을 쓰지 않으면 중단점을 모두 삭제한다.

gdb delete 10
gdb d 10
gdb d

 

next(n) : 다음 문장을 실행한다. 다음 문장이 함수 호출이라면, 그냥 호출 값만 받아온다.

gdb n

 

step(s) : 다음 문장을 실행한다. 다음 문장이 함수 호출이라면, 해당 함수에 들어가서 한 문장씩 실행한다.

gdb s

 

continue(c) : 다음 중단점까지 실행한다.

gdb c

 

advance [N] : N번째 라인까지 실행한다.

gdb advance 19

 

print(p) [something] : 현재 [something] 값을 출력한다. [something]에는 변수, array 값, 함수 등이 들어간다.

gdb p i
gdb p asdf[20]

 

display [something] : [something] 값이 바뀔 때마다 자동으로 해당 값을 출력해준다.

gdb display i

 

x [option] [var] : 메모리 주소 내용을 출력한다.

gdb x /4bt &i

option은 다음과 같다.

b - byte (8bit)

h - halfword (16bit)

w - word (32bit)

g - giant word (64bit)

 

t - binary

x - hex

d - decimal

o - octal

# 만약 i가 15213이라면
# int i = 15213

# i의 메모리 주소에 있는 값을 16비트 정수 1개로 보여줘
gcc x /1wd &i # 15213

# i의 메모리 주소에 있는 값을 8비트 이진수 4개로 보여줘
gcc x /4bt &i # 01101101 00111011 000000 000000

 

kill(k) : 프로그램을 종료한다.

gdb k

 

quit(q) : GDB를 종료한다.

gdb q

 

'공부' 카테고리의 다른 글

시스템 프로그래밍 - 수 표현법  (0) 2022.10.20
시스템 프로그래밍 - Modular programming  (0) 2022.10.20
Unix programming - 2  (0) 2022.10.18
Unix Programming - 1  (0) 2022.10.18
컴퓨터네트워크 Chapter 15  (0) 2022.10.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함