Linux_gdb调试工具&Makefile项目管理 (3)

gdb调试
  1. -g:使用该参数编译可执行文件,得到调试表
  2. gdb a.out
  3. list:l/list 1 列出源码,根据源码指定行号设置断点
  4. b/breakpoint: b 20 在20行位置设置断点
  5. r/run:运行程序
  6. n/next:下一条指令(会越过函数)
  7. s/step:下一条指令(会进入函数)
  8. p/print:p i 查看变量的值。
  9. coutinue:继续执行断点后续指令。
  10. quit:退出 gdb 当前调试
其他指令:
  • run:使用 run 查找段错误出现位置
  • finish:结束当前函数调用
  • set args:设置main函数命令行参数(在start、run之前)
  • run 子串1 字串2 … :设置main函数命令行参数
  • info b:查看断点信息表
  • b 20 if i = 5 :设置条件断点
  • ptype:查看变量类型
  • bt:列出当前程序正存活着的栈帧
  • frame:根据栈帧编号,切换栈帧
  • display:设置跟踪变量
  • undisplay:取消设置跟踪变量,使用跟踪变量的编号来进行取消

Makefile项目管理

  • 用途
    1. 项目代码编译管理
    2. 节省编译项目时间
    3. 一次编写终身受益
    4. 操作示例文件:add.c sub.c mul.c dive.c main.c
  • 命名:makefile   Makefile
  • Makefile工作原理
    • 基本原则:
      1. 若想生成目标文件,检查规则中的依赖条件是否存在,如不存在,则寻找是否有规则用来生成该依赖文件。
      2. 检查规则中的目标是否需要更新,必须先检查它的所有依赖,依赖中有任意一个被更新,则目标必须更新。
        • 分析各个目标和依赖之间的关系
        • 根据依赖关系自底向上执行命令
        • 根据修改时间比目标新,确定更新
        • 如果目标不依赖任何条件,则执行对应命令,以示更新。
  1. 一个规则:

    • 目标:依赖条件
      (一个tab缩进)命令
      1. 目标的时间必须晚于依赖条件的时间,否则,更新目标
      2. 依赖条件如果不存在,找寻新的规则去产生或创建依赖
    • ALL:目标
      • 指定makefile的终极目标
  2. 两个函数:

    1. src = $(wildcard ./*.c) :匹配当前工作目录下的所有 .c 文件。将文件名组成列表,赋值给变量 src。
    2. obj = $(patsubst %.c, %.o, $(src)):将参数3中,包含参数1的部分,替换为参数2。
    • clean:  (没有依赖)
      -rm -rf $(obj) a.out $emsp; “-”:作用是,删除不存在文件时,不报错。顺序执行结束。
  3. 三个自动变量:

    • $@:表示规则中的目标
    • $<:表示规则中的第一个依赖条件,如果将该变量应用在模式规则中,它可将依赖条件中的依赖依次取出,套用模式规则。
    • $^:表示规则中的所有依赖条件,组成一个列表,以空格隔开,如果这个列表中有重复的项则消除重复项。
  4. 模式规则:

    • %.o:%.c
      gcc -c $< -o %@
  5. 静态模式规则:

    • $(obj):%.o:%.c
      gcc -c $< -o %@
  6. 伪目标:

    • .PHONY:clean ALL
  7. 参数:

    • -n:模拟执行 make、make clean 命令
    • -f:指定文件执行 make 命令。

2019 ZhiZDK 如转载请声明。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值