Linux 操作系统&gdb、makefile

今天是对前面两天的补充和完善。

1、gdb

1.1 gdb 作用

调试程序

1.2 调试bug的步骤

        测试:发现问题

        固化:让bug重现

        定位:找到bug的位置

        修改:修改bug

        验证

1.3 gdb调试工具的使用

1->想要使用gdb调试工具,在编译的时候gcc后面加一个-g,生成带有调试信息的可执行程序

带有调试信息的可执行程序要比直接编译的要大一些。

2->启动gdb

格式:gdb./可执行程序

1.4 gdb的常用命令

退出:quit         q

清屏:ctrl +L

显示代码:
        list或者l(小写的L)        只会显示10行代码

        list   行号                    显示该行附近的10行代码

运行指令:run

设置断点:---断点:运行到该行,会停止运行

break    行号       简写:(b  行号)

查看断点:info break


设置断点:默认是使能状态        (使能:该断点起作用)

使能:使该断点起作用

enable +断点的编号

失能:使该断点失去作用,不起作用

disable +断点的编号

删除断点:

delete +断点的编号

clear +断点的行号

继续运行:        cont c

打印变量的值:print 变量名

调试程序思想1:

设置断点  +  run   +print   +   c

调试程序思想 2 :单步调试

运行  start

n  next:下一步,按步调试,遇到函数,不会进入函数内部

s  step:下一步,按步调试,遇到函数,会进入函数内部

finish  :结束当前函数,返回到调用点;

整体思想:用n来把控全局,遇到自己想进入的子函数的时候,再使用s进入

遇到主函数传参:gdb-args ./xxxx

2、 makefile

2.1 安装 makefile

        sudo apt-get install make

2.2 makefile 的作用

        工程管理工具:名字为make的文件;

        将你原本给终端写的指令,写入到该文件中

        make 之后自动执行makefile中的指令,make

2.3 makefile的使用

        思想:目标和依赖

        vim makefile    打开/创建并打开一个makefile文件

格式:1

        目标:依赖

        (按Tab键)命令

格式2:没有依赖的目标,称为伪目标

        目标:

        按Tab键) 命令

第二个 makefile

#表示注释

makefile中的变量:

变量名=原来的内容           C=gcc

变量的引用:$(变量名)        $(C)        等价于gcc

特殊变量:

$@:目标

$^:所有的依赖

$<:所有依赖中的第一个依赖

%.o:%.c

        gcc -c $< -o $@

静态库封装:

动态库封装:

拓展: makefile 里面的函数:
wildcard
原型:$(wildcard <pathname>)
功能:查找<pathname>下指定文件
返回:包含路径的所有指定文件
SRCPATH=$(wildcard ./src/*.c)
$(SRCPATH) 等价于 src/main.c src/add.c src/del.c
notdir
原型:$(notdir <names...>)
功能:从文件名序列<names>中取出非目录部分。非目录部分是指最后一个反斜杠 ( “ /”)
之后的部分。
返回:返回文件名序列<names>的非目录部分
SRCNOPATH=$(notdir $(SRCPATH))
$(SRCNOPATH) 等价于 main.c del.c add.c
patsubst
原型:$(patsubst <pattern>,<replacement>,<text>)
功能:查找<text>中的单词( 单词以“空格”、 “Tab”或“回车”“换行”分隔) 是否符合模式
<pattern>, 如果匹配的话, 则以<replacement>替换。 这里, <pattern>可以包括通配符“%”,
表示任意长度的字串, 按照名字匹配。
返回:函数返回被替换过后的字符串
LIBPATH = $(patsubst %.c ./lib/%.o $(SRCNOPATH))
$(LIBPATH) 等价于 ./lib/main.o ./lib/add.o ./lib/del.o
 

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值