Linux上C语言编译与调试

Linux上C语言编译

1. 编译的过程

(1)预编译

(2)编译

词法分析、语法分析、语义分析、代码优化、汇总符号

(3)汇编

将汇编指令翻译成二进制格式,生成各个section,生成符号表

(3)链接

2. 一步编译执行命令

2.1 编译命令

缺点:如果依赖文件过多,则会太麻烦

gcc -o 执行文件名 依赖的所有.c文件

ex: gcc -o main main.c

2.2 执行命令

路径/可执行程序名 ps:路径可为相对路径也可以是绝对路径

2.3makefile实现自动化编译

文件名称必须是:makefile -> touch 普通文件

2.3.1 安装make命令

sudo apt install make

2.3.2 编辑makefile文件

文件格式:

all:可执行文件名(可执行程序)

可执行文件名:所有依赖文件的.o文件

​ 生成.o文件的命令(gcc -o)

依赖文件.o:依赖文件.c

​ 生成.c文件的命令(gcc -c)

依赖文件.o:依赖文件.c

​ 生成.c文件的命令(gcc -c)

clean:

​ 删除所有的.o文件(rm -rf)

3. 调试

debug 调试版本

release 发布版本

一步编译完成默认为发布版本

3.1 转变为debug模式

命令:gcc -o 执行文件名 依赖的所有.c文件 -g

3.2 启动调试

命令:gdb 执行文件名

gdb

有(gdb)提示符出现,可以输入命令

3.3 下断点

3.3.1 展示十行内容

命令 l

3.3.2展示当前行号前后十行的内容

命令 l 行号

3.3.3 下断点

命令 b 行号

3.3.4 查看断点信息

命令 info b

3.3.5 运行代码(运行代码到断点位置阻塞{或scanf,fgets…})

命令 r

3.3.6 下一步 一条语句逻辑运行(跳过函数)

命令 n

3.3.7 实时查看当前变量的信息

命令 p 变量

3.3.8 结束调试

命令 quit

3.3.9 下一步 进入将要被调用的函数中执行

命令 s

3.3.10 下一步 跳出函数

命令 finish

3.3.11 删除断点

命令 delet 断点编号

3.3.12 无效断点

命令 diable 断点编号

3.3.13 有效断点

命令 inable 断点编号

3.3.14 显示变量类型

命令 ptype 变量

3.3.15 跟踪进程命令

命令 set follow-fork-mode child

跟踪子进程

命令 set follow-fork-mode parent

跟踪父进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值