gdb调试和makefile

一 gdb调试
前提条件:可执行文件必须包含调试信息 gcc -g
1 启动gdb:gdb 文件名
2 查找代码:
当前文件:list 行号(函数名)
指定文件:list 文件名:行号(函数名)
3 设置断点:
设置当前文件断点:b 行号(函数名)
设置指定文件断点:b 文件名:行号(函数名)
设置条件断点:b 行号 if value==23
删除断点:d 断点的编号
4 查看设置的断点:info b
5 开始执行gdb调试
执行一步操作:start
继续执行:continue – c
执行多步,直接停在断点处:run – r
6 单步调试
进入函数体内部:step – s
从函数体内部跳出:finish(如果在循环处有断点,需要将断点删掉)
进入函数体内部:next – n
退出当前循环:
7 追踪变量:
自动打印变量的值:display 变量名
取消变量追踪:undisplay 编号
获取编号:info display
手动打印变量的值:print-- p
获取变量对应的类型:ptype
8 跳出循环的命令:u
9 退出gdb调试:quit

二 Makefile
1 一个规则
三要素:目标,依赖,命令
目标:依赖
命令

第一条规则是用来生成终极目标的规则
如果规则中的依赖不存在,向下寻找其他的规则
更新机制:比较的是目标文件和依赖文件的时间

2 两个函数
1)查找指定目录下,指定类型的文件
src=$(wildcard ~/aa/*.c)
1)匹配替换函数
Obj= $(pastsubst %.c, %.o $(src))

3 三个自动变量
$<:规则中的第一个依赖
$~:规则中的所有依赖
$@:规则中的目标
只能在规则中的命令中使用

4 模式规则
%.o:%.c
gcc -c $< -o $@

三 linux系统IO函数
1 文件描述符:int类型;一个进程中最多可以打开多少文件:1024
2 pcb:进程控制块,在其中有一个文件描述符表–数组[1024]
3 虚拟地址空间:
用户区,内核区

代码段
已初始化的全局变量
未被初始化的全局变量
堆–从下往上
共享库
栈–从上往下
环境变量
内核区

4 大文件–写入另一个文件
两种方式:
read write – 每次读1个byte
getc putc --每次读一个byte – 效率高
标准c库函数,内部有一个缓冲区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值