Linux常用工具2(gdb、makefile、git)

  1. gdb:调试器
    调试器的功能:调试,观察程序的运行过程,通常目的都是为了排查程序的运行错误。
    程序的错误分类:编译错误,链接错误,运行时错误(运行中逻辑不对以及程序运行时崩溃)
    调试程序的前提:程序必须是一个debug版本的程序;gcc/g++默认生成release版本程序,若要生成debug版本,则使用- g 选项
    可执行程序的分类:debug调试版—加入程序调试信息,并且不会对代码进行优化;release发布版—不包含调试信息,并且会对代码进行优化。

    gdb常用调试指令:
    流程控制:
    run:直接运行程序
    start:开始逐步调试
    list:查看(指定文件)调试行附近代码—list test.c:12
    next:下一步(逐过程-遇到函数直接运行完毕)
    step:下一步(逐语句-遇到函数则进入函数继续调试)
    until:直接运行到指定位置—until test.c:16
    continue:继续从当前调试位置运行
    break:打断点—break test.c:14 break function_name(在函数下第一行打断点)
    info break:查看断点信息
    delete:删除全部断点—delete id 删除对应断点
    watch:变量监控断点(当变量发生改变时停止)—watch variable_name
    quit:退出gdb调试

    内存控制:
    print:查看或设置变量内容—print var_name print var_name = val
    backtrace:查看函数调用栈(通常用于检测程序运行时崩溃位置,栈顶位置的函数就是程序发生崩溃的位置)

  2. make/makefile
    makefile:是一个文本工具,记录一个项目的构建流程。

    makefile的编写规则:
    目标对象:依赖对象
    /t(制表符)为了生成目标对象所要执行的指令
    预定义变量的使用:
    $@表示目标对象,$^ 表示所有依赖对象,$<表示依赖对象的第一个
    src=$(wildcard ./*.c)获取当前目录下所有以.c结尾的文件的文件名称并存放到src变量中
    obj=$(patsubst %.c, %.o, $(src))将src变量中内容的.c替换为.o,然后存放到obj变量中
    程序的编译过程:预处理,编译,汇编,链接 — 在项目构建中会整体分为两步 — 编译与链接(好处是如果只是修改了一个.c文件,以前直接对所有.c进行编译生成可执行程序的过程来说,需要重新编译所有.c生成可执行程序,效率低下。因此分为两步进行操作,先把每个.c都生成自己的.o,然后再把所有的.o都链接到一起,这样做一旦一个.c发生改变,那么只需要对这一个.c进行编译生成.o之后,重新链接一次就可以生成可执行程序了,其他的.c不需要编译)
    伪对象:声明一个目标对象与外部文件无关,表示每次这个对象不管是否最新都要重新生成 — .PHONY:

    make:是一个解释程序,对makefile中记录的构建规则流程逐步解释执行,完成项目的构建。

    make的解释执行规则:
    (1)在命令行中执行make命令,则表示运行make解释程序,程序会在当前目录下找到名为makefile/Makefile的文件,解释执行其中的项目构建规则。
    (2)在规则中,找到要生成的第一个目标对象,判断目标对象是否已经存在,存在的话是否需要重新生成(根据源码文件的最后一次修改时间对比),然后执行对象生成指令。
    (3)make每次在makefile中只会找到第一个目标对象进行生成,生成之后就会退出。
    (4)make在生成目标对象的时候,会先查找依赖对象的生成规则,先生成依赖对象,然后再去生成目标对象。

  3. git:项目的版本管理工具(整理归档项目周期的各个阶段,便于项目的管理,即出错回滚)
    git基本操作:
    (1)在github上建立远程仓库
    (2)将远程仓库克隆到本地:git clone https://github.com/…/…git
    (3)提交本次修改记录:git add --all ./(提交当前目录下所有文件)git add path/filename(提交指定路径文件)
    (4)提交本地仓库版本管理:git commit -m “本次修改的备注信息”
    (5)将本地版本同步到远程仓库:git push origin master(master是主分支)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值