clang gcc


原文链接: clang gcc

源文件经过预处理器,完成预编译,生成预编译.i文件
gcc -o hello.i -E hello.c

预编译文件经过编译器,完成编译,生成汇编.s文件
gcc -o hello.s -S hello.i

汇编文件进过汇编器,生成.o目标文件
gcc -o hello.o -c hello.s

多个目标文件经过链接器,完成链接,生成可执行文件
gcc -o hello.exe hello.o

.c直接生成可执行文件
gcc -o hello.exe hello.c

gdb 的 用法

一、 环境
vim .bashrc
ulimit -c unlimited //启用core

二、makefile 启用gdb

.SUFFIXES: .cpp .o

CC=g++


SRCS=main.c \
		work.cpp

OBJS=$(SRCS:.cpp=.o)
EXEC=myexec

all: $(OBJS)
	$(CC) -o $(EXEC) $(OBJS)
	@echo '-------------ok--------------'

.cpp.o:
	$(CC) -Wall -g -o $@ -c $<

clean:
	rm -f $(OBJS)
	rm -f core*

三、gdb调试
1、gdb myexec core.xxxx (debug segment error)
2、gdb -q myexec (quiet mode)
gdb>run

gdb>where (error in which line)
gdb>list m,n

gdb>print i (print variable or express)
gdb>print 'filename'::express
gdb>print funcname::express

gdb>whatis i (show type of variable)

gdb>break linenumber
gdb>break funcname
gdb>break filename:funcname
gdb>break filename:linenumber
gdb>continue (go on)
gdb>info break
gdb>delete breaknumber
gdb>set variable varname = newvalue

gdb>step
gdb>next
gdb>return [value]

`