系统编程-常用工具2

常用工具(2)

目录

常用工具(2)

一、gdb调试工具

如果想进行调试 编译程序的时候

二、makefile 脚本编译工具

1、makefile是什么?

2、使用makefile

-- 安装make指令

-- make指令的使用

-- Makefile文件的书写规则:

-- Makefile的运行规则:

-- 补充:


一、gdb调试工具

  --  一般所有集成环境都会自带调试工具

  • keil vscode qt 等都自带

-- gdb调试工具是linux系统自带的

如果想进行调试 编译程序的时候就:
  • gcc main.c -g
    -- 需要添加选项-g

  • 使用方法:gdb 可执行程序名
    -- 成功进入gdb调试工具 

    alt text


-- 调试的大概过程:1 添加断点 2 运行 3 调试

  • 断点:当程序运行到断点后会自动停止 -- gdb的一些指令:
  • l (L小写) 查看源文件内容 主要作用获取行号
    -- l 行号
    -- 一直输入l,就会一会向下显示程序,一个l不能完全显示程序。
    -- 主要作用是为了让你知道在哪加断点
    -- l 行号,可以直接跳转

    alt text

  • b 行号
    -- 在该行上添加一个断点
  • info b
    -- 查看断点信息
  • r       -- 从头开始运行程序
    -- 当程序遇到断点之后,不要在输入r了,如果输入r,就会重新从程序开头执行到该断点。

alt text

  • c 继续运行直到遇到下一个断点停止
  • s 遇到会进入到函数内部去运行
  • n 遇到函数会直接将函数运行完毕

  • -- 注:s和n都是一步一步执行的。c是运行到下一个断点。

alt text


-- print 变量名

  • 打印变量的值 

    alt text

-- clear 行号

  • 清除该行断点

    alt text

-- delete breakpoint 断点号 

alt text


  • disable b 断点号
    -- 失能断点

  • enable b 断点号
    -- 使能断点

alt text

 --q 退出

二、makefile 脚本编译工具

1、makefile是什么?

  • makefile是一个文件,里面包含了一系列的指令,通过makefile可以方便的编译程序,makefile文件一般以makefile或者Makefile命名。

2、使用makefile

-- 安装make指令
  • sudo apt-get install make

-- 如果出现错误,可以尝试一下命令:

  • sudo apt-get update

 

-- make指令的使用

-- make指令执行后,会去当前所在的路径主动查找有没有叫 makefile 的文件去运行

  • make 指令要想运行必须要有 Makefile 文件

  • -- 如果同一路径下有多个makefile文件 需要使用-f来指定运行哪一个,甚至文件名可以不是makefile
  •  

    alt text


 

-- Makefile文件的书写规则:

-- 目标:依赖文件
(Tab)指令

  • 语法规则
目标 ... : 依赖 ...
	命令1     # 命令前一定要用tab
	命令2
	. . .

-- 注:在makefile文件中写注释的符号是#

-- 目标就是指要干什么,或说运行 make 后生成什么,
而依赖是告诉 make 如何去做以实现目标。 在 Makefile 中,
目标和依赖是通过规则来表达的。

-- 规则

  • 目标的时间必须晚于依赖条件的时间,否则,更新目标。
  • 依赖条件如果不存在,找寻新的规则去产生依赖条件。

-- 变量的定义:

  • 变量名 = 变量值

-- 变量的使用:

  • $(变量名)

-- 特殊变量:

  • $@ 表示目标文件
  • $^ 表示所有的依赖文件
  • $< 表示第一个依赖文件

-- makefile 中通配符

  • % 百分号
  • !!!必须是目标和依赖文件一块进行通配
  • alt text


 

-- Makefile的运行规则:
  • 1、目标要生成的文件。如果目标文件的更新时间晚于依赖文件更新时间,则说明依赖文件没有改动,目标文件不需要重新编译。否则会进行重新编译并更新目标文件。
  • 2、默认情况下Makefile的第一个目标为终极目标。
  • 3、all:Makefile文件默认只生成第一个目标文件即完成编译,但是我们可以通过all 指定所需要生成的目标文件。
  • 4、依赖:即目标文件由哪些文件生成
  • 5、命令:即通过执行命令由依赖文件生成目标文件。
    -- 注意每条命令之前必须有一个tab(此文档编辑器默认是空格,复制下来的代码需要把命令代码的缩进改为tab制表符)保持缩进,这是语法要求(会有一些编辑工具默认tab为4个空格,会造成Makefile语法错误)。

  • 运行规则

alt text

alt text


 

-- 补充:

alt text


-- 1、"="是最普通的等号,在Makefile中容易搞错赋值等号,使用 “=”进行赋值,变量的值是整个Makefile中最后被指定的值。

VIR_A = A
VIR_B = $(VIR_A) B
VIR_A = AA

经过上面的赋值后,最后VIR_B的值是AA B,而不是A B,在make时,会把整个Makefile展开,来决定变量的值
  2、“:=” 表示直接赋值,赋予当前位置的值。

VIR_A := A
VIR_B := $(VIR_A) B
VIR_A := AA

最后BIR_B的值是A B,即根据当前位置进行赋值。因此相当于“=”,“:=”才是真正意义上的直接赋值
  3、“?=” 表示如果该变量没有被赋值,赋值予等号后面的值。

  •  VIR ?= new_value

如果VIR在之前没有被赋值,那么VIR的值就为new_value。

  • VIR := old_value
  • VIR ?= new_value
  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值