尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

[GDB] gdb实用命令

[GDB] gdb实用命令
📅 发布时间:2026/6/22 0:14:53
[GDB] gdb实用命令

ChatGPT生成(2025年10月29日11:31:17)

GDB 实用命令与调试入门指南

目录
  • GDB 实用命令与调试入门指南
    • 一、GDB 是什么
    • 二、启动 GDB
    • 三、常用命令总览(速查表)
    • 四、断点控制(Breakpoints)
      • 设置断点
      • 查看 / 删除断点
      • 条件断点
    • 五、单步调试与执行控制
    • 六、查看变量与内存
      • 查看变量
      • 监视变量变化
      • 查看内存
    • 七、调试崩溃程序(core dump)
      • 启用 core dump
      • 运行程序并崩溃后
      • 分析
    • 八、GDB 实战案例
      • 示例:定位数组越界
    • 九、图形化前端推荐


一、GDB 是什么

GDB(GNU Debugger) 是 GNU 项目下的调试器,用于调试 C/C++、Go、Rust 等语言的程序。
它可以让你:

  • 在程序运行时暂停(设置断点)
  • 逐行查看执行过程
  • 观察变量值的变化
  • 调试段错误(segmentation fault)
  • 调试多线程、core dump、远程目标程序等

二、启动 GDB

启动方式 说明
gdb ./main 启动 GDB 并加载可执行文件
gdb ./main core 调试 core dump 文件
gdb -p <pid> 附加到正在运行的进程
gdb --args ./main arg1 arg2 带参数启动
run 在 GDB 中运行程序
quit 退出 GDB

三、常用命令总览(速查表)

命令 说明
list / l 查看源代码
break / b 设置断点
delete / d 删除断点
run / r 运行程序
continue / c 继续运行
next / n 单步执行(不进入函数)
step / s 单步执行(进入函数)
finish 运行到当前函数结束
print / p 打印变量值
info locals 查看当前局部变量
backtrace / bt 查看调用栈
frame n 切换到第 n 帧
watch <var> 监视变量变化
info threads 查看线程
thread <id> 切换线程
info registers 打印返回值(查看寄存器信息)
set logging on 输出日志到文件
symbol-file <file> 加载符号文件
quit / q 退出调试器
.gdbinit 文件 自动脚本执行(在该文件中写入常用命令)

四、断点控制(Breakpoints)

设置断点

b main               # 在 main 函数处断点
b 25                 # 在第 25 行设置断点
b file.c:10          # 在 file.c 第 10 行设置断点
b func_name          # 在指定函数入口设置断点

查看 / 删除断点

info breakpoints     # 查看所有断点
delete 1             # 删除编号 1 的断点
disable 2            # 暂时禁用断点 2
enable 2             # 重新启用断点

条件断点

break foo if x > 10

程序运行到 foo() 并且 x > 10 时才会暂停。


五、单步调试与执行控制

命令 说明
n / next 执行下一行,不进入函数
s / step 执行下一行,进入函数
finish 执行到当前函数返回
c / continue 继续运行直到下一个断点
until <行号> 运行到指定行停止
return 立即从当前函数返回
run 从头重新执行程序

六、查看变量与内存

查看变量

print x
p x+5
p *ptr
p my_struct.member

监视变量变化

watch count
info watchpoints

查看内存

x/10x addr       # 查看地址 addr 开始的10个十六进制字
x/4f &array      # 查看数组浮点内容
x/s ptr          # 打印字符串

七、调试崩溃程序(core dump)

当程序崩溃时(Segmentation fault),系统可生成一个 core 文件。
通过它你可以查看当时的函数调用栈和变量状态。

启用 core dump

ulimit -c unlimited

运行程序并崩溃后

gdb ./main core

分析

bt           # 查看调用栈
frame 2      # 切换到栈帧2
info locals  # 查看局部变量

八、GDB 实战案例

示例:定位数组越界

#include <stdio.h>int main() {int a[3] = {1, 2, 3};for (int i = 0; i <= 3; i++) { // BUG: 越界printf("%d\n", a[i]);}return 0;
}

调试步骤:

gcc -g test.c -o test
gdb ./test
(gdb) run
(gdb) bt
(gdb) frame 0
(gdb) list
(gdb) print i

输出:

Program received signal SIGSEGV, Segmentation fault.
#0  main () at test.c:5
5           printf("%d\n", a[i]);
(gdb) print i
$1 = 3

✅ 定位到 i=3 时访问了 a[3] 越界。


九、图形化前端推荐

工具 说明
VS Code + C/C++ Extension 最常用、直观、跨平台
DDD (Data Display Debugger) 经典 GTK 界面 GDB 前端
gdbgui Web 界面调试器 (pip install gdbgui)
Eclipse CDT / CLion IDE 集成调试器,功能强大

相关新闻

  • PalmPay 携手阿里云 RocketMQ,共建非洲普惠金融“高速通道”
  • 2025年标识标牌源头厂家排行榜
  • 使用 .NET Core。如果目标进程未运行 .NET Core,则发生这种情况并不意外。

最新新闻

  • 基于技能图与强化学习的人形机器人敏捷技能切换系统设计与实现
  • 突破传统RAG局限:LangChain+通义千问融合动态路由与检索融合的工业级智能客服架构
  • UVa 553 Simply Proportion
  • 终极指南:如何免费突破网盘下载限制,获取真实直链地址
  • 2026昆明白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 2026年重庆混凝土预制构件厂家推荐:水篦子/路沿石/井盖/排水管/防撞墩等优质品牌全解析 - 品牌发掘

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号