【深入解析git和gdb:版本控制与调试利器的终极指南】(上)

简介: 【深入解析git和gdb:版本控制与调试利器的终极指南】

【本节目标】


  • 1. 掌握简单gdb使用于调试
  • 2. 学习 git 命令行的简单操作, 能够将代码上传到 Github 上


1.Linux调试器-gdb使用


1.1.背景


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


为什么要有debug模式release模式两种模式呢?这两种模式的存在是为了在不同阶段和用途下提供不同的编译和运行配置。


Debug 模式主要用于开发和调试阶段,以提供更好的可读性和调试能力,而 Release 模式则用于最终部署,面向用户的就是该版本,且该版本能提供更好的性能和减小可执行文件的体积。Debug 模式形成的可执行程序会添加调式信息,Release 模式形成的可执行程序会去掉调式信息。对于用户来说,用户不需要调式信息,用户只在乎下载速度和安装文件大小。对于程序员来说,程序员需要改bug,因此需要调式信息才能修正bug,于是就出现了两种模式。


1.2. 开始使用


我们首先写个程序,方便后面调试样例

#include<stdio.h>
int Sum(int n)
{
  int i = 1;
  int sum = 0;
  for (; i <= n; i++)
  {
    sum += i;
  }
  return sum;
}
int main()
{
  int result = Sum(100);
  printf("%d\n", result);
  return 0;
}


然后再将我们的makefile文件写好。


然后我们来编译一下我们上面的代码,上面的代码是求从1加到100的和,可以看到我们的程序是正确的。


接下来就开始我们的调试程序


但是我们发现此时我们不能进行调试,因为此时是release版本,是不可被调试滴。


为了区分两种模式下的可执行程序,将Debug版本下的可执行程序加上-d,此时经过修改之后。


我们可以清楚的看到两个模式下的可执行程序的文件大小,刚好可以验证我们上面的结论。通过文件大小能验证Debug确实增加了调式信息,但是我们想看到更详细的调试信息。


readelf 是一个用于读取 ELF(Executable and Linkable Format,可执行和可链接格式)文件的命令行工具。ELF 是一种用于在Unix和类Unix系统上执行程序的标准文件格式。readelf 工具允许用户查看 ELF 文件的内部结构、头部信息、节(sections)、程序头部、符号表等内容。


该工具通常在开发和调试过程中使用,以便分析可执行文件或共享库的细节,了解它们的结构和元数据。通过 readelf,用户可以获取关于 ELF 文件的各种信息,例如代码段和数据段的大小、链接地址、节头表、符号表等。


然后我们在删除刚刚两个版本的文件,重新make一个Debug模式的可执行程序mytest文件,然后开始调试mytest文件。


gdb调试相关指令学习 - 平替 - vs上的调试


gdb binFile 退出: ctrl + d 或 quit 调试命令:


2. 学习 git 命令行的简单操作, 能够将代码上传到 Github 上


2.1.什么是git?理解版本控制器


git是一个分布式版本控制系统,用于跟踪项目代码的变化。


版本控制器(Version Control System,VCS)是一种记录和管理文件或代码变更的系统。它追踪文件的历史变更,允许用户回溯到先前的状态,并支持多人协同开发。


2.2.什么是github/gitee?



GitHub:GitHub是一个基于Git的代码托管平台,提供了代码仓库的托管服务。开发者可以将他们的项目代码存储在GitHub上,并与团队成员协同工作。GitHub也提供了许多协作和社交功能,如问题跟踪、代码审查、项目管理等,使得团队协作更加便捷。


Gitee:Gitee(码云)是中国的一个类似GitHub的代码托管平台,同样基于Git。它提供了类似的代码仓库托管服务,并支持团队协作。Gitee也提供了一些特有的功能,以满足中国开发者的需求,如在线构建、镜像仓库等。


总的来说,Git是版本控制系统,而GitHub和Gitee是基于Git的代码托管平台,它们提供了一些额外的功能来帮助开发者更好地进行协同开发。


2.3.使用 git 命令行


安装git - 必须先安装指令


yum install -y git


由于github是国外的网站,我们访问起来速度较慢,于是这里使用gitee作为我们的样例。


在 Github 创建项目


  • No.1:注册自己的gitee账号,然后进入自己的个人主页,点击右上角的+号,点击新建仓库


  • No.2:在进入创建的仓库界面后,设置仓库的名称,如果我们想将该仓库分享给别人,就可以设置开源,初始化现在选择C语言,.gitignore 是在本地仓库上传到远端仓库的时候,不会上传不必要的或敏感的文件提交到代码仓库。例如,编译产生的临时文件、操作系统生成的文件、一些配置文件等,通常不应该包含在版本控制中,而 .gitignore 文件就是告诉 git 忽略这些文件的规则,这里也选择C。模板设置 Readme文件 是为了让其他开发者或用户更容易理解和使用你的项目而创建的。它可以包含项目的概述、依赖关系、配置信息、使用示例等。分支模型涉及到开发,目前这个仓库只有我们一个人用,所以我们这里就不需要设置了。


【深入解析git和gdb:版本控制与调试利器的终极指南】(下):https://developer.aliyun.com/article/1425636

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
6月前
|
开发工具 git
Git版本控制工具合并分支merge命令操作流程
通过以上步聚焦于技术性和操作层面指南(guidance), 可以有效管理项目版本控制(version control), 并促进团队协作(collaboration).
1264 15
|
11月前
|
Linux 开发工具 git
版本控制工具:Git的安装和基本命令使用指南。
结束这段探险,掌握了Git你就等于掌握了一个宝藏,随时可以瞥见你的编程历程,轻松面对日后的挑战。Git,无疑是编程者的强大武器,开始你的Git探险之旅吧!
398 28
|
测试技术 持续交付 开发工具
Git版本控制在团队协作中具有重要作用
Git版本控制在团队协作中具有重要作用
490 154
|
数据可视化 开发工具 git
如何解决 Git 版本控制系统中冲突的问题?
在Git版本控制系统中,冲突是指在合并或拉取操作时,两个或多个开发者对同一文件的同一部分进行了不同的修改,导致Git无法自动确定应该采用哪种修改。
659 154
|
12月前
|
JSON 监控 物联网
WebSocket 调试全攻略:核心解析、工具选择与对比!
WebSocket 是一种全双工、实时交互的网络通信协议,适用于即时通信、实时数据流、多人协作、IoT 等场景。调试 WebSocket 时,工具应具备握手管理、实时消息收发、自定义 Header、消息大小告警、分组管理、多连接支持和断线重现等功能。主流调试工具如 Postman、ApiPost 和 ApiFox 各有优劣:Postman 界面友好适合基础调试;ApiPost 支持高级功能如消息分组和自动重连;ApiFox 则强化了多连接支持。选择工具时需根据具体需求和团队熟悉度决定。
|
12月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
12月前
|
数据可视化 测试技术 API
前后端分离开发:如何高效调试API?有工具 vs 无工具全解析
在前后端分离的开发模式中,API 调试的效率直接影响项目的质量和交付速度。通过本文的对比分析,我们可以看到无工具调试模式虽具备灵活性和代码复用能力,但在操作便利性和团队协作上稍显不足。而传统的外部调试工具带来了可视化、高效协作与扩展性,却可能存在工具切换带来的开发链路断层问题。Apipost-Hepler 融合了两者的优势,让开发者无需离开熟悉的 IDEA 环境,就能享受可视化调试工具的强大功能。
396 5
|
12月前
|
JSON 监控 物联网
#WebSocket 调试全攻略:Postman、Apipost和Apifox核心解析、工具选择与对比!
WebSocket 是一种现代化的全双工通信协议,允许客户端和服务端通过持久连接实时双向传输数据。它适用于即时通讯、实时通知、金融行情、在线协作、物联网等场景。调试 WebSocket 时,工具应具备握手管理、实时消息收发、自定义 Header、消息大小监控、分组管理、多连接支持等功能。
940 1
|
数据可视化 测试技术 API
GraphQL开发工具选型指南:Apipost高效调试与文档生成实战解析
本文深入解析了GraphQL开发工具Apipost在高效调试与文档生成方面的优势,对比同类工具Apifox,突出其可视化界面、实时调试及自动化文档生成等特性。Apipost通过智能代码补全、错误提示等功能简化复杂Query编写,支持一键生成标准化文档,显著提升开发效率和团队协作效果,尤其适合中大型团队应对复杂业务场景。
|
存储 开发工具 数据安全/隐私保护
「Mac畅玩鸿蒙与硬件9」鸿蒙开发环境配置篇9 - 使用Git进行版本控制
在 HarmonyOS 项目开发中,Git 版本控制可以帮助开发者规范地管理代码变更,确保协作流程顺畅。本篇将详细介绍从创建项目、提交代码到 Git 远程仓库,再到修改、推送更新的完整操作流程,重点演示如何使用 Git 和 GitHub 进行身份验证和版本管理。
711 3
「Mac畅玩鸿蒙与硬件9」鸿蒙开发环境配置篇9 - 使用Git进行版本控制

推荐镜像

更多
  • DNS