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+dquit

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命令窗口
相关推荐
他们都叫我GPT侠3 小时前
【无标题】
git·github
果汁华3 小时前
CLI 命令行与 Python 框架实战
git·python·github
zzzzzz3104 小时前
我用 AI Agent 重构了日常开发工作流,效果出乎意料
人工智能·git·github
我叫黑大帅18 小时前
git 的 NFD 与 NFC 有什么区别?为什么我有个文件在 NFC 中间不会被当成改动,在 NFD 中就会当成改动
git·面试·github
呆萌很21 小时前
Git push 408 超时、远程断开解决办法
git
Lesile1 天前
Hands-on Git experience
git
Co_Hui1 天前
Git 基本使用
git
cooldream20091 天前
AI 时代,Git 应该怎么学
人工智能·git
柒和远方1 天前
V053: 从 Git 回退到 AI 工程治理:Vibe Coding 的 Harness 工作流与质量阀门
git·vibecoding