当前位置: 首页 > news >正文

GNU Debugger(GDB)使用教程

一、GDB介绍

1、什么是GDB

(1)GDB是GNU项目的开源、源代码级命令行调试器,可控制程序的启动、暂停和终止,并在程序暂停时查看内部变量、寄存器、调用栈等运行现场,供开发者定位代码问题。

(2)GDB支持绝大多数主流UNIX、Windows、macOS操作系统;嵌入式开发使用对应架构的交叉版GDB(如ARM Cortex-M系列arm-none-eabi-gdb)。

(3)GDB支持四类调试操作:

①加载/启动目标程序,配置运行参数、环境变量,控制程序执行流程。

②设置代码断点和观察点,满足特定触发条件时自动暂停程序。

③程序主动暂停、断点命中或异常崩溃后,查看寄存器、变量、函数调用栈,还原现场。

④运行时临时修改内存、寄存器变量的值,用于验证问题修复逻辑(修改仅调试期间生效,不改动原始可执行文件或固件)。

(4)GDB支持的编程语言:C/C++、Go、Rust、Fortran、Assembly(汇编语言)等。

2、嵌入式远程调试架构

(1)被调试的目标程序分三类运行场景:

①本地调试:GDB直接控制和调试同一台机器上的进程。

②远程调试:GDB通过串口/TCP连接到远程目标上的GDB Server,调试远程程序。

③嵌入式/模拟器调试:GDB连接到OpenOCD/QEMU等,间接调试裸机固件或模拟器里的系统。

(2)下图所示的是嵌入式远程调试架构。

①Host主机层:

主机层一般是电脑主机;IDE/DDD/GDBGUI是图形调试前端,比如VSCode、CubeIDE、可视化GDB工具;GDB是核心调试客户端,主要用于下发端点、读写内存等调试指令;OpenOCD是GDB远程服务端,适配ST-Link/J-Link等调试器,把GDB指令转为SWD/JTAG硬件时序

②HW probe硬件探针层:

硬件探针层主要是硬件调试转换器,比如ST-Link,USB口连接电脑,SWD/JTAG排线连接单片机,负责电信号转换

③Target目标设备层:

在嵌入式中,被调试的目标是开发板/芯片,图中所示的是两种架构,相应的,有两种完成独立的远程调试链路

右侧链路是Cortex-M单片机主流方案,调试员在PC端图形调试界面操作,界面后端将操作指令转给GDB,GDB通过TCP连接OpenOCD(默认3333端口),向其下发调试命令,然后OpenOCD驱动ST-Link硬件,把指令转换成SWD/JTAG电平时序,通过SWD/JTAG直接与Cortex-M4的调试接口通信,实现读写寄存器、烧 Flash、启停程序

左侧链路是Cortex-A Linux MPU方案,调试员在PC端图形调试界面操作,界面后端将操作指令转给GDB,GDB通过网口TCP远程连接开发板上运行的gdbserver,gdbserver是Linux端轻量代理,接管A7内核上被调试的应用程序

http://www.jsqmd.com/news/1099257/

相关文章:

  • 鸿蒙原生 ArkTS 布局深度解析:constraintSize 与 aspectRatio 的协同原理
  • [智能体-613]:OpenClaw 全套 6 份竣工版 workspace 标准md文件
  • 月之暗面 Kimi 上轮 200 亿美元融资完成交割,新一轮投前估值涨至 315 亿美元
  • Python网站下载器:三步将整个网站完整保存到本地
  • 文献综述写作不用埋头查文献:okbiye 一体化综述 AI 功能,精准匹配学术文献规范
  • Kinovea视频分析软件:体育训练与科研测量的终极指南
  • 用AI做内容方案,怎样让输出更像真实业务而不是套话
  • 2026在线去除水印方法教程:免费工具测评、操作步骤及安全风险解析
  • 3分钟搞定!AirBattery:你的苹果全家桶电量监控终极方案
  • [智能体-614]:OpenClaw构建智能体的过程,本质是围绕大模型,在智能体框架引擎的驱动下,用自然语言构建数字化公司的过程
  • 电脑文件传输到 iPhone 不用 iTunes:8 种方法
  • 3步解决抖音评论采集难题:从手动复制到自动分析的高效方案
  • 5个实用技巧:快速掌握Monitorian多显示器亮度调节
  • 终极指南:如何在Minecraft服务器中使用Citizens2插件快速创建智能NPC角色
  • WorkshopDL完全指南:无需Steam客户端下载创意工坊模组的终极解决方案
  • Fiori Elements List Report Architecture,从 CDS 到用户体验的一条完整链路
  • Pentaho Kettle实战指南:构建企业级ETL数据管道的专业技巧
  • Notepad--:跨平台文本编辑器的终极解决方案,告别多系统切换烦恼
  • 这份榜单够用!AI论文写作软件深度测评与推荐
  • Applite:重新定义macOS软件管理的优雅革命
  • 【嵌入式架构】项目越来越难维护?从全局变量到分层架构的避坑指南
  • MoeKoeMusic:如何用这款二次元音乐播放器打造个性化听歌体验
  • 最新,国产大模型从架构到训练基础设施全部自研,美团的LongCat-2.0做到了
  • AI大模型应用开发实战:从Prompt工程到RAG与低代码平台全栈指南
  • Windows窗口放大难题如何破解?Magpie三大核心技术让模糊变清晰
  • Pearcleaner:3个简单技巧彻底解决macOS系统清理难题,快速释放磁盘空间的免费终极方案
  • 摆脱造模失败、数据漂移!武汉云克隆犬椎间盘纤维环细胞,精准服务椎间盘退变研究
  • OpenSSL 3.5.2实战:C++集成SM2国密算法完整指南
  • 金融APP测试实战:基于MAI-UI-8B的智能UI自动化框架应用
  • 降级——“丢卒保车“的艺术