Git GDB/CGDB调试器

Git版本控制器与GDB/CGDB调试器学习总结


一、Git版本控制器

1.1 安装Git

bash 复制代码
yum install git
git --version   # 查看版本

1.2 在GitHub创建项目

  1. 登录GitHub,点击左下方的 New repository 按钮
  2. 输入项目名称,校验通过后点击 Create repository
  3. 在创建好的项目页面中复制项目链接(HTTPS或SSH)

1.3 下载项目到本地

bash 复制代码
git clone [url]

1.4 Git三板斧

命令 作用
git add [文件名] 将文件添加到暂存区,告知Git需要管理
git commit -m "日志信息" 提交改动到本地仓库,必须注明提交日志
git push 同步到远端服务器(GitHub),需输入用户名密码

1.5 其他常用命令

命令 作用
git log 查看提交历史记录
git status 查看当前仓库状态
git pull 从远端拉取最新代码

1.8 首次使用配置

bash 复制代码
git config --global user.name "Your Name"
git config --global user.email you@example.com

1.9 免密码提交

可参考配置SSH密钥或使用凭证助手来实现免密码提交。


二、调试器 - GDB/CGDB

2.1 预备知识

  • 程序发布方式有两种:debug模式 和 release模式
  • Linux下gcc/g++默认生成的是 release模式 ,不支持调试
  • 要使用gdb调试,编译时必须加上 -g 选项
bash 复制代码
# 默认模式(不支持调试)
gcc mycmd.c -o mycmd

# debug模式(支持调试)
gcc mycmd.c -o mycmd -g

# 验证是否包含调试信息
file mycmd   # 会显示 "with debug_info"

2.2 GDB基本使用

操作 命令
启动调试 gdb binFile
退出调试 ctrl+d 或 quit

2.3 GDB常用命令大全

运行与控制
命令 简写 作用
run r 从程序开始连续执行
continue c 从当前位置继续执行
next n 单步执行,不进入函数内部(逐过程,类似F10)
step s 单步执行,进入函数内部(逐语句,类似F11)
finish - 执行到当前函数返回后停止
until 行号 - 执行到指定行号
断点管理
命令 作用
break 行号 / b 行号 在指定行设置断点
break 文件名:行号 在指定文件的指定行设置断点
break 函数名 在函数开头设置断点
info break / info b 查看所有断点信息
delete breakpoints / d 删除所有断点
delete breakpoints n 删除序号为n的断点
disable breakpoints 禁用所有断点
enable breakpoints 启用所有断点
查看与修改变量
命令 作用
print 表达式 / p 打印表达式的值
p 变量名 打印指定变量的值
set var 变量=值 修改指定变量的值
display 变量名 跟踪显示指定变量(每次停止时自动显示)
undisplay 编号 取消跟踪显示
info locals 查看当前栈帧的局部变量值
栈与代码查看
命令 作用
list / l 显示源代码,每次10行
list 行号 显示指定行附近的源代码
list 函数名 列出指定函数的源代码
backtrace / bt 查看当前调用栈

2.4 Watch(监视变量变化)

watch 命令用于监视一个表达式(如变量)的值,当值发生变化时GDB会自动暂停:

bash 复制代码
(gdb) watch result   # 监视result变量
(gdb) c              # 继续执行
# 当result变化时,GDB会自动暂停并显示新旧值

应用场景:当怀疑某个变量被意外修改导致问题时,可以用watch监控。

2.5 条件断点

方式一:新增时带条件
bash 复制代码
(gdb) b 9 if i == 30    # 在第9行设置断点,仅当i==30时触发
方式二:给已有断点追加条件
bash 复制代码
(gdb) condition 2 i==30   # 给2号断点追加条件 i==30(注意没有if)

** 注意**:两种方式语法不同,不要混淆!

2.6 实战示例:定位问题

通过 set var 可以临时修改变量值来验证问题原因:

bash 复制代码
(gdb) p result   # 查看result值为5050
(gdb) p flag     # 查看flag值为0(异常)
(gdb) set var flag=1   # 临时修改flag为1
(gdb) n          # 继续执行,验证结果是否正确

2.7 CGDB(推荐)

CGDB是GDB的增强版,支持分屏显示源代码,调试体验更好:

bash 复制代码
# CentOS安装
sudo yum install -y cgdb

# Ubuntu安装
sudo apt-get install -y cgdb

使用技巧:

  • ESC键:进入代码窗口(可浏览代码)
  • i键:回到GDB命令窗口
相关推荐
全栈陈序员4 小时前
Git】从入门到精通(八)—— git log:查看提交历史
大数据·git·elasticsearch
7177779 小时前
Git自建用什么工具比较好:Gitea、Forgejo、GitLab CE与Gitee的选型对比
git·gitlab·gitea
lsc_blog1 天前
年底还在招的岗位,先确认缺口和到岗要求
git·缓存·ci/cd·职场和发展·github
全栈陈序员1 天前
【Git】从入门到精通(十一)—— git reset 三种模式详解
git·elasticsearch
全栈陈序员1 天前
【Git】从入门到精通(十)—— 撤销与恢复:git checkout与git restore
运维·网络·数据库·git
全栈陈序员2 天前
【Git】从入门到精通(五)—— git add:将文件加入暂存区
大数据·git·elasticsearch
全栈陈序员2 天前
【Git】从入门到精通(七)—— git status:查看仓库状态
大数据·git·elasticsearch
莫晓燚2 天前
Ansible 13 个常用模块---企业实战
git·github
无言听风雨丶2 天前
Kubernetes GitOps 持续交付实战:用 Argo CD 让 Git 成为集群事实源
git·elasticsearch·kubernetes
全栈陈序员2 天前
【Git】从入门到精通(六)—— git commit:提交到版本库
大数据·git·elasticsearch