【linux】git和gdb调试工具

这篇具有很好参考价值的文章主要介绍了【linux】git和gdb调试工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在linux下提交代码同步到gitee

1.创建一个新的仓库(演示步骤)

【linux】git和gdb调试工具,Linux,linux,git,运维

【linux】git和gdb调试工具,Linux,linux,git,运维

2.init

【linux】git和gdb调试工具,Linux,linux,git,运维
【linux】git和gdb调试工具,Linux,linux,git,运维
这两个步骤用于识别提交代码的身份,一个你的名字,一个你的邮箱
【linux】git和gdb调试工具,Linux,linux,git,运维

开启本地仓库
【linux】git和gdb调试工具,Linux,linux,git,运维

【linux】git和gdb调试工具,Linux,linux,git,运维

【linux】git和gdb调试工具,Linux,linux,git,运维
克隆本地仓库成功


【linux】git和gdb调试工具,Linux,linux,git,运维
我们将这个仓库拷到了111目录底下.

【linux】git和gdb调试工具,Linux,linux,git,运维
【linux】git和gdb调试工具,Linux,linux,git,运维
我们发现少了一个.gitignore,因为.gitignore是隐藏文件,所以使用ls -la查看
【linux】git和gdb调试工具,Linux,linux,git,运维

3.git log 指令

用于查看提交状态
【linux】git和gdb调试工具,Linux,linux,git,运维

上面可以看到提交人的信息,以及时间,以及提交备注


将上节课写的代码拷贝到当前目录下
【linux】git和gdb调试工具,Linux,linux,git,运维

【linux】git和gdb调试工具,Linux,linux,git,运维
此时还没有同步到gitee上去

4.git三板斧

1.git add .//将该目录的修改记录同步到本地仓库去
【linux】git和gdb调试工具,Linux,linux,git,运维
2.git commit -m+“提交备注”//正式将修改更新到本地仓库
【linux】git和gdb调试工具,Linux,linux,git,运维
根据.git更改时间发现仓库更新
【linux】git和gdb调试工具,Linux,linux,git,运维
3.git push//将本地仓库内容同步到gitee远端仓库

【linux】git和gdb调试工具,Linux,linux,git,运维

【linux】git和gdb调试工具,Linux,linux,git,运维
【linux】git和gdb调试工具,Linux,linux,git,运维
git log 查看同步记录

【linux】git和gdb调试工具,Linux,linux,git,运维
然后我们在gitee上发现同步上了.


在windows下我们使用小乌龟上传代码到gitee远端仓库 ,我们发现会有很多.obj ,.exe文件 ,我们不需要这些,我们应该怎么办?

【linux】git和gdb调试工具,Linux,linux,git,运维
我们先新建3个文件 c.txt x.txt2 z.txt1 我们不要上传.txt文件,.txt2,.txt1上传
将这个后缀添加到.gitignore中就可以了

5. vim修改内容

【linux】git和gdb调试工具,Linux,linux,git,运维
【linux】git和gdb调试工具,Linux,linux,git,运维
添加不要上传的文件后缀
【linux】git和gdb调试工具,Linux,linux,git,运维
使用三板斧提交同步代码到远端
【linux】git和gdb调试工具,Linux,linux,git,运维
发现没有出现.txt后缀。测试成功


我们如何在本地删除一个文件,然后同步到远端呢?

6.git rm +文件名

我们假如要删除刚才上传的两个txt1,txt2
【linux】git和gdb调试工具,Linux,linux,git,运维

使用三板斧同步修改到远端
【linux】git和gdb调试工具,Linux,linux,git,运维
【linux】git和gdb调试工具,Linux,linux,git,运维
删除成功

演示完成,我们需要删除我们这个仓库
【linux】git和gdb调试工具,Linux,linux,git,运维

这里可以查看提交的记录,
然后删除我们这个仓库
【linux】git和gdb调试工具,Linux,linux,git,运维


gdb调试工具

debug版本为什么比release版本文件大

用户一般用的产品只需要使用,不用带调试信息,用户也不需要调试信息,使用release版本就行,而程序员需要看调试信息找错误,所以程序员使用的debug版本,debug版本比release大是因为携带调试信息

  1. 背景
    程序的发布方式有两种,debug模式和release模式
    Linux gcc/g++出来的二进制程序,默认是release模式
    要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

这里有一个问题?
for循环形式只是在c99下是允许的 ,所以要修改一下我的for循环模式,c89将变量定义写在外面
【linux】git和gdb调试工具,Linux,linux,git,运维

默认gcc 编译生成release版本
【linux】git和gdb调试工具,Linux,linux,git,运维

exe1为release版本下的
exe2为debug版本下的
【linux】git和gdb调试工具,Linux,linux,git,运维

明显在debug下生成的.exe文件大
使用readelf指令可以读取可执行文件的详细信息,并且通过管道(相当于把管道前处理后再干什么),grep指令将debug信息列举
【linux】git和gdb调试工具,Linux,linux,git,运维

我们发现exe1没有debug信息,exe2有debug信息


gdb指令

1.进入gdb

1.gdb+在debug下生成可执行文件的文件名

【linux】git和gdb调试工具,Linux,linux,git,运维

2.退出gdb

2.q
【linux】git和gdb调试工具,Linux,linux,git,运维

3.查看对应的.c文件对应行的上下文

3.list+文件名:行号/函数名
3.l+文件名:行号/函数名(简写)
【linux】git和gdb调试工具,Linux,linux,git,运维

当执行完一个指令后,按回车会自动执行最近的上一个指令
【linux】git和gdb调试工具,Linux,linux,git,运维

简写也可以
【linux】git和gdb调试工具,Linux,linux,git,运维

l+函数名
【linux】git和gdb调试工具,Linux,linux,git,运维

l 15 显示15行的上下文
【linux】git和gdb调试工具,Linux,linux,git,运维


接着我们对应着vs的调试理解gdb调试下的指令
我们将代码拷到vs上去

4.添加断点

在vs中添加断点

在光标停留那一行按F9或者鼠标在对应行点击出现红点
【linux】git和gdb调试工具,Linux,linux,git,运维

在gdb中添加断点

4.b+文件名:行号/函数名
4.b+ 行号/函数名(简写)
【linux】git和gdb调试工具,Linux,linux,git,运维

5.查看断点

在vs查看断点

直接看红圈出现的位置

在gdb中查看断点

5.info +b
5.i+b(简写)
【linux】git和gdb调试工具,Linux,linux,git,运维

6.删除断点

在vs中删除断点

在打断点的行再次按一下F9或者用鼠标点击一下断点取消断点

在gdb中删除断点

6.d +断点编号
【linux】git和gdb调试工具,Linux,linux,git,运维

7.断点使能

在gdb中让断点关闭/打开,并非删除

7.disable +断点编号(断点关闭)
7.enable +断点编号(断点重启)
【linux】git和gdb调试工具,Linux,linux,git,运维

8.逐过程(不进入定义函数内部)

在vs中逐过程:F10
在gdb中的逐过程:
8.next
8.n(简写)

【linux】git和gdb调试工具,Linux,linux,git,运维
我们在主函数那打个断点,然后使用指令r让程序跑起来,遇到main函数处打的断点停下来,然后按n,开始逐过程,我们发现到了add函数不进函数内部,z直到程序结束.

9.逐语句(进入定义函数内部)

在vs中逐语句:按F11
在gdb逐语句:
9.step
9.s(简写)
【linux】git和gdb调试工具,Linux,linux,git,运维
同理,我们在主函数打断点,按r让程序跑起来,当到断点处,按s/step,我们发现可以进入add函数中

10.查看变量内容或者变量地址

在vs中查看变量内容/变量地址:

【linux】git和gdb调试工具,Linux,linux,git,运维
F11运行起来在监视里面添加变量/变量地址

在gbd中查看变量内容/变量地址:

10.print+变量名/变量地址
10.p+变量名/变量地址(简写)
【linux】git和gdb调试工具,Linux,linux,git,运维

11.持续显示变量/变量地址

在gdb中:
11.display+变量名/变量地址
11.d+变量名/变量地址
【linux】git和gdb调试工具,Linux,linux,git,运维

12.取消持续显示的变量/变量地址

在gdb中:
12.undisplay+ 要取消持续显示的变量的编号
【linux】git和gdb调试工具,Linux,linux,git,运维
【linux】git和gdb调试工具,Linux,linux,git,运维

13.运行到下一断点处

在gdb中:
13.continue
13.c
【linux】git和gdb调试工具,Linux,linux,git,运维
这个是我们的程序
我们分别在16行,18行打断点
【linux】git和gdb调试工具,Linux,linux,git,运维
在16行的第一个断点停下,按continue/c进入下一个断点处.

14.运行结束所在函数,就停下来

在gdb中:
14.finish
【linux】git和gdb调试工具,Linux,linux,git,运维

15.跳转到指定行,中间代码都是运行过的

在gdb中:
15.until
【linux】git和gdb调试工具,Linux,linux,git,运维
16行直接到18行,并且中间都被执行.

17.修改变量的值

在gdb中:
17.set var +变量名=(修改后的值)
【linux】git和gdb调试工具,Linux,linux,git,运维

18.查看栈帧创建情况

在gdb中:
18.bt
【linux】git和gdb调试工具,Linux,linux,git,运维
在add函数中,我们发现add函数的栈帧在主函数的上面压着,当finish完add后,只剩下main的栈帧.

总结
list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
r或run:运行程序。
n 或 next:单条执行。
s或step:进入函数调用
break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点
info break :查看断点信息。
finish:执行到当前函数返回,然后挺下来等待命令
print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
p 变量:打印变量值。
set var:修改变量的值
continue(或c):从当前位置开始连续而非单步执行程序
run(或r):从开始连续而非单步执行程序
delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点
disable breakpoints:禁用断点
enable breakpoints:启用断点
info(或i) breakpoints:参看当前设置了哪些断点
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪
until X行号:跳至X行
breaktrace(或bt):查看各级函数调用及参数
quit:退出gdb文章来源地址https://www.toymoban.com/news/detail-836377.html

到了这里,关于【linux】git和gdb调试工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux开发工具之调试器gdb

    程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项   所以一份代码若要被调试必须是debug模式,但是在linux下我们编译代码的时候默认为release模式,要想让我们的代码

    2024年02月07日
    浏览(29)
  • Linux中的C/C++语言调试工具 GDB

    GDB(GNU Debugger)是一个功能强大的调试器,用于调试和分析程序的执行过程。它是GNU项目的一部分,可以在多个操作系统上使用,包括Linux、Unix和Windows。 GDB主要用于调试编译后的 可执行文件 ,它可以帮助程序开发人员识别和修复代码中的错误、追踪程序的执行流程、观察和

    2024年02月08日
    浏览(65)
  • 【Linux操作系统】深入了解系统编程gdb调试工具

    在软件开发过程中,调试是一个非常重要的步骤。无论是在开发新的软件还是维护现有的代码,调试都是解决问题的关键。对于Linux开发者来说,GDB是一个非常有用的调试工具。在本文中,我们将探讨Linux中使用GDB进行调试的方法和技巧。 GDB是GNU调试器的缩写,是一个功能强

    2024年02月14日
    浏览(35)
  • [linux开发工具]小程序--进度条、调试器 - gdb

    📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 第一种情况 执行结果如下: 可以看到程序先执行printf再执行sleep 第二种情况 执行结果如下: 在这里

    2024年02月22日
    浏览(30)
  • Linux系统下的程序调试工具——GDB(GNU Debugger)

    GCC(GNU Compiler Collection)是GNU开发的编程语言编译器,它支持多种编程语言,如C、C++、Objective-C、Fortran、Ada和Go等。 以下是一些常用的操作: 启动GDB并加载程序 设置断点 在代码中的某一行设置断点,当程序运行到这一行时,GDB会暂停执行。 例如,如果你在 main.c 文件的第

    2024年04月13日
    浏览(33)
  • Linux之基础开发工具gdb调试器的使用(三)

    📘北尘_ :个人主页 🌎个人专栏 :《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 yum install -y gdb 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式,release模式下无法调试 要使用gd

    2024年02月05日
    浏览(33)
  • Linux工具【2】(调试器gdb、项目自动化构建工具make/Makefile)

    在上一篇文章中介绍了Linux中的编辑器vim与编译器gcc与g++: 戳我看vim与gcc详解哦 在本篇文章中将继续来介绍Linux中的工具: 调试器gdb与项目自动化构建工具make/Makefile 在Windows环境中,我们使用vs时,常常会逐过程与逐语句地调试代码以更高效地寻找到错误的位置。在Linux中也

    2024年02月12日
    浏览(39)
  • 【Linux】自动化构建工具--make/Makefile&&调试器--gdb的使用

    一个工程的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。 makefile带来的好处就是– “自动化编译” ,一旦写好,就只

    2024年02月08日
    浏览(32)
  • 【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用

    格式: gcc [选项] 要编译的文件 [选项] [目标文件] , gcc / g++ 安装: sudo yum install -y gcc-c++ 。安装后的编译器默认的版本是较低的,我们可以 使用选项 -std=c99 (即使用c99标准), -std=c++11 (即使用c++11的标准)来进行版本提升 。使用 -o 选项,可以将编译生成的可执行重命名

    2024年03月10日
    浏览(85)
  • 【探索Linux】—— 强大的命令行工具 P.6(调试器-gdb、项目自动化构建工具-make/Makefile)

    前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的一些知识,也学习了一些Linux的基本操作,也了解并学习了有关Linux开发工具vim 、gcc/g++ 使用、yum工具以及git 命令行提交代码也相信大家都掌握的不错,今天博主带大家了解一下 —— Linux系统下的调试

    2024年02月12日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包