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]