【RT Thread】使用QEMU模拟器结合GDB调试RT Thread内核

在 RT-Thread 中使用 QEMU 模拟环境并通过 GDB 调试,流程相对简单(无需硬件,纯软件模拟)。核心思路是:让 QEMU 以调试模式启动 RT-Thread 固件,并等待 GDB 连接,然后通过 GDB 进行断点设置、单步执行等操作。建议直接使用RTT官方的ENV工具,集成了QEMU和常见架构的gdb,文档详解【ENV工具文档中心】

  1. 确保支持 QEMU 模拟

确认你的 RT-Thread 工程已配置为 QEMU 目标平台(如 qemu-vexpress-a9 或 qemu-virt64-aarch64 等)。一般进到对应的bsp然后配置QEMU就可以

  1. 启动 QEMU 并进入调试模式

QEMU 支持以 "等待 GDB 连接" 的模式启动,命令格式如下:
qemu-system-<架构> -M <机器型号> -kernel <固件路径> -s -S [其他选项]

  • -s:等价于 -gdb tcp::1234,表示在 1234 端口开启 GDB 服务器,等待连接。
  • -S:启动后立即暂停 CPU(不执行任何指令),等待 GDB 发送 "继续" 命令。
  • -M:指定 QEMU 模拟的机器型号(如 vexpress-a9 对应 ARM 平台)。
  • -kernel:指定要运行的 RT-Thread 固件(rtthread.elf)。

示例

复制代码
qemu-system-arm -M vexpress-a9 -kernel build/rtthread.elf -s -S -serial stdio

此时 QEMU 会启动并显示黑屏(因 -S 参数暂停执行),等待 GDB 连接。

  1. 启动 GDB 并连接 QEMU

打开新的终端 / ENV 窗口,进入工程目录。启动对应架构的 GDB(RT-Thread ENV 通常自带,或者自行配置,如 ARM 平台用 arm-none-eabi-gdb):

复制代码
arm-none-eabi-gdb build/rtthread.elf  # 加载调试固件
(gdb) target remote localhost:1234

接下来连接成功后可以直接开始调试

最后附上GDB调试详解【Linux】GDB保姆级调试指南

相关推荐
A星空12318 小时前
一、Linux嵌入式的I2C驱动开发
linux·c++·驱动开发·i2c
释怀不想释怀18 小时前
Linux环境变量
linux·运维·服务器
zzzsde18 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
凡人叶枫18 小时前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
yuanmenghao19 小时前
Linux 性能实战 | 第 7 篇 CPU 核心负载与调度器概念
linux·网络·性能优化·unix
qq_2975746719 小时前
Linux 服务器 Java 开发环境搭建保姆级教程
java·linux·服务器
70asunflower19 小时前
Emulation,Simulation,Virtualization,Imitation 的区别?
linux·docker
神梦流20 小时前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器
凡人叶枫20 小时前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
CODECOLLECT20 小时前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件