文章目录
这是一份关于在Linux环境下使用gdb进行基础调试的指南。考虑到用户可能是刚开始接触gdb的开发者,因此内容需要简洁明了,步骤清晰,并包含常用命令的示例。rak部落小编为您整理发布Linux环境基础开发工具使用指南:掌握简单gdb使用于调试。
1. GDB简介
GDB(GNU Debugger)是Linux下强大的命令行调试工具,用于分析程序崩溃、逻辑错误和内存问题。核心功能包括:
- 控制程序执行(启动/暂停/单步)
- 设置断点/观察点
- 查看变量和内存状态
- 分析函数调用栈
2. 准备工作
(1) 安装GDB
bash
sudo apt install gdb # Debian/Ubuntu sudo yum install gdb # CentOS/RHEL
(2) 编译带调试信息的程序
关键: 使用 -g
选项编译程序
bash
gcc -g main.c -o demo # 生成带调试信息的可执行文件
3. 基础调试流程
(1) 启动GDB
bash
gdb ./demo # 加载程序
(2) 常用命令速查表
命令 | 简写 | 功能说明 |
---|---|---|
run | r | 启动程序 |
break | b | 设置断点 (e.g. b main ) |
next | n | 单步执行(跳过函数) |
step | s | 单步执行(进入函数) |
print | p | 打印变量值 (e.g. p x ) |
continue | c | 继续运行直到下一个断点 |
backtrace | bt | 查看函数调用栈 |
quit | q | 退出GDB |
4. 实战示例:调试崩溃程序
示例代码 (crash.c
)
c
#include <stdio.h> void trigger_crash() { int *ptr = NULL; *ptr = 42; // 空指针解引用! } int main() { printf("程序启动\n"); trigger_crash(); return 0; }
调试步骤
bash
# 编译程序 gcc -g crash.c -o crash # 启动GDB gdb ./crash
gdb
(gdb) b main # 在main函数设断点 (gdb) r # 运行程序 → 停在main() (gdb) n # 单步执行 → 跳过printf (gdb) s # 进入trigger_crash函数 (gdb) n # 执行下一行 → 崩溃发生! # 分析错误 (gdb) bt # 查看调用栈 #0 trigger_crash () at crash.c:5 #1 0x000055555555517d in main () at crash.c:10 (gdb) p ptr # 检查指针值 → $1 = (int *) 0x0 (gdb) q # 退出
5. 高级技巧
- 条件断点gdb复制下载b 15 if i == 100 # 当i=100时在第15行暂停
- 监视变量gdb复制下载watch x # x的值变化时暂停
- 查看内存gdb复制下载x/8xw &array # 以16进制查看数组前8个int
- 多线程调试gdb复制下载info threads # 查看线程列表 thread 2 # 切换到线程2
6. 调试建议
- 程序崩溃时用
bt
查看调用栈 - 使用
-O0
禁用优化避免调试信息错乱 - 结合
valgrind
检测内存问题 - 善用
layout src
进入TUI模式(文本界面)
提示:输入
help <command>
查看命令帮助文档(如help break
)
掌握这些基础操作后,您已能解决80%的常见调试问题!通过实践加深理解,可逐步探索更高级的调试功能。
Rak部落小编温馨提示:以上是小编为您整理发布的Linux环境基础开发工具使用指南:掌握简单gdb使用于调试。更多知识分享可持续关注我们,raksmart机房更有多款云产品免费体验,助您开启全球上云之旅。
raksmart618狂欢7天,全场首月6.1折
活动规则
1. 注册成为RAKsmart用户均可领取618全场折扣优惠券;(点击上方图片领取!!)
2. 618全场折扣优惠券不予代理商折扣同享;
3. 618全场折扣优惠券限产品首月优惠,续费原价;
4. 618全场折扣券除域名、云原生等产品外全站产品可用(含站群产品);
5. 产品折扣券有效期7天,在活动会场下单可直接使用;
6. 产品折扣券活动最终解释权为RAKsmart 所有。