Linux 开发必备:Git 版本控制与 GDB 调试指南
在 Linux 开发流程中,版本控制与程序调试是保障项目稳定性和开发效率的两大核心环节。Git 作为当前最主流的分布式版本控制系统,能高效管理代码迭代、追踪修改记录并支持多人协同开发;GDB(GNU 调试器)是 Linux 下调试 C/C++ 程序的利器,可帮助开发者定位代码逻辑错误、跟踪变量变化,快速排查运行时问题。
本文介绍了 Linux 环境下 Git 版本控制和 GDB 调试工具的使用指南。内容包括 Git 的安装配置、基本工作流程(add/commit/push)、.gitignore 配置及 SSH 免密提交设置。同时详细讲解了 GDB 的基础命令(如 run/break/list/print)、进阶技巧(watch 监视、条件断点、栈帧分析)以及 cgdb 可视化工具的安装与使用。旨在帮助开发者提升代码管理和调试效率。

在 Linux 开发流程中,版本控制与程序调试是保障项目稳定性和开发效率的两大核心环节。Git 作为当前最主流的分布式版本控制系统,能高效管理代码迭代、追踪修改记录并支持多人协同开发;GDB(GNU 调试器)是 Linux 下调试 C/C++ 程序的利器,可帮助开发者定位代码逻辑错误、跟踪变量变化,快速排查运行时问题。
sudo yum install git
git --version
sudo apt install git -y
git --version
登录远程仓库平台创建项目后,复制仓库链接。在本地创建目录并克隆:
git clone [url]
Git 需要知道提交者的姓名和邮箱,用于标记每一次代码的归属:
# 全局配置
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱"
# 查看配置是否生效
git config --list
| 操作步骤 | 命令 | 作用 |
|---|---|---|
| 暂存代码 | git add 文件名 | 将修改的文件加入暂存区 |
| 本地提交 | git commit -m "提交说明" | 将暂存区的修改提交到本地仓库 |
| 远程同步 | git push | 将本地仓库的提交同步到远程仓库 |
其他辅助命令:
git statusgit loggit pull通过创建 .gitignore 文件指定忽略规则(如编译产物、日志):
vim .gitignore
内容示例:
*.o
main
log/
提交 .gitignore 文件:
git add .gitignore
git commit -m "添加.gitignore"
git push
ls -la ~/.ssh/
ssh-keygen -t rsa -C "你的邮箱"
cat ~/.ssh/id_rsa.pub
ssh -T [email protected]
git remote set-url origin [email protected]:用户名/仓库名.git
git push,无需输入密码。touch ~/.git-credentials
vim ~/.git-credentials
https://<username>:<password>@github.com
git config --global credential.helper store
编译时添加 -g 选项开启 debug 模式,生成调试信息:
gcc test1.c -o test1 -g
gdb test1
启动与退出:
gdb 可执行文件名quit 或 Ctrl+D常用命令:
| 命令 | 作用 | 样例 |
|---|---|---|
| list (l) | 显示源代码 | list 10 或 list main |
| run (r) | 运行程序 | run |
| next (n) | 单步执行,不进入函数 | next |
| step (s) | 单步执行,进入函数 | step |
| break (b) | 设置断点 | break main 或 break file.c:10 |
| info (i) breakpoints | 查看断点列表 | info b |
| info locals | 查看局部变量 | info locals |
| finish | 执行到函数返回 | finish |
| print (p) | 打印表达式值 | print a+b |
| set var | 修改变量值 | set var i=10 |
| delete (d) breakpoints | 删除断点 | delete 1 |
| display | 跟踪显示变量 | display x |
| undisplay | 取消跟踪 | undisplay 1 |
| backtrace (bt) | 查看调用栈 | bt |
示例代码 sum.c:
#include <stdio.h>
int Sum(int s, int e) {
int result = 0;
for (int i = s; i <= e; i++) {
result += i;
}
return result;
}
int main() {
int start = 1;
int end = 100;
int total = Sum(start, end);
printf("1 到 100 的和:%d\n", total);
return 0;
}
当变量修改时自动触发断点:
(gdb) watch result
仅在特定条件下触发断点:
b 行号 if 条件
(gdb) b 6 if i == 50
condition 断点编号 条件
(gdb) condition 3 i == 50
使用 bt 查看函数调用栈,info locals 查看当前函数局部变量。
默认 GDB 为纯命令行界面,cgdb 支持代码分屏显示。
# CentOS
sudo yum install cgdb -y
# Ubuntu
sudo apt install cgdb -y
cgdb sum
界面分为上下两部分:上半部分显示源代码,下半部分显示 GDB 命令行。按 ESC 切换至代码区,按 i 切换回命令行。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online