使用VS Code调试 RT-Thread qemu-vexpress-a9 BSP工程

本应用笔记描述了在 windows 平台使用 vs code 调试 rt-thread qemu-vexpress-a9 bsp 工程。
本文的目的和结构
本文的目的和背景
vs code(全称 visual studio code)是一个轻量且强大的代码编辑器,支持 windows,os x 和 linux。内置 javascript、typescript 和 node.js 支持,而且拥有丰富的插件生态系统,可通过安装插件来支持 c++、c#、python、php 等其他语言。
本文主要介绍在 windows 平台使用 vs code 调试 qemu-vexpress-a9 bsp 工程。
本文的结构
本文主要介绍 vs code 调试准备工作以及如何调试工程。
准备工作
下载 rt-thread 源码,推荐下载3.1.0及以上版本。
下载 rt-thread env 工具,推荐下载1.0.0及以上版本。
https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-tool-manual/env/env-user-manual/
下载 vs code
https://code.visualstudio.com/download
以上网址请复制至浏览器打开
运行和调试 rt-thread
步骤一 安装调试插件
在 vs code extensions 里下载并安装支持 c/c++ 的调试插件:
安装好后确认插件为以下状态,如果不是则点击重新加载:
步骤二 打开 vs code 项目工程
在 env 控制台进入 qemu-vexpress-a9 bsp 根目录,然后输入命令code .打开 vs code。
vs code 打开后会自动打开 qemu-vexpress-a9 bsp 文件夹,如下图所示。
步骤三 编译 rt-thread
点击 vs code “查看 -> 终端” 打开 vs code 内部终端,在终端里输入命令scons即可编译工程,终端会打印出编译信息。
编译完成后输入.qemu.bat命令就可以运行工程。终端会输出 rt-thread 启动 logo 信息,qemu 也运行了起来。
注意事项:
1、调试 bsp 工程前需要先编译工程生成 rtthread.elf 文件。
2、可以使用scons --target=vsc -s命令更新 vs code 需要用到的 c/c++ 头文件搜索路径信息。不是每次都需要更新,只有在使用了 menuconfig 重新配置了 rt-thread 或更改了 rtconfig.h 头文件时才需要。
步骤四 修改 qemu-dbg.bat 文件
开始调试前需要编辑qemu-vexpress-a9目录下的qemu-dbg.bat文件,在 qemu-system-arm 前加入 start :
@echo offif exist sd.bin goto run qemu-img create -f raw sd.bin 64m :run start qemu-system-arm -m vexpress-a9 -kernel rtthread.elf -serial stdio -sd sd.bin -s -s
步骤五 调试工程
如下图所示,在 vs code 里点击调试菜单(小虫子图标),调试平台选择 windows,然后按 f5 就可以开启 qemu 调试模式,断点停留在 main 函数。vs code 调试选项如下图所示:
qemu 也运行了起来,如下图所示。
在 vs code 里可以使用 gdb 命令,需要在最前面加上-exec。 例如-exec info registers命令可以查看寄存器的内容:
其他一些主要命令介绍如下所示:
查看内存地址内容:x/ ,各个参数说明如下所示:
n 是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的 u 定义
f 表示显示的格式,参见下面。如果地址所指的是字符串,那么格式可以是 s。其他格式如下表所示:
u 表示从当前地址往后请求的字节数,如果不指定的话,gdb 默认是 4 个 bytes。u 参数可以用下面的字符来代替,b 表示单字节,h 表示双字节,w 表示四字 节,g 表示八字节。当我们指定了字节长度后,gdb 会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。
addr 表示一个内存地址。
注意事项:严格区分 n 和 u 的关系,n 表示单元个数,u 表示每个单元的大小。
示例:x/3uh 0x54320表示从内存地址 0x54320 读取内容,h 表示以双字节为一个单位,3 表示输出三个单位,u 表示按十六进制显示。
查看当前程序栈的内容: x/10x $sp--> 打印 stack 的前 10 个元素查看当前程序栈的信息: info frame----list general info about the frame查看当前程序栈的参数: info args---lists arguments to the function查看当前程序栈的局部变量: info locals---list variables stored in the frame查看当前寄存器的值:info registers(不包括浮点寄存器) info all-registers(包括浮点寄存器)查看当前栈帧中的异常处理器:info catch(exception handlers)
tips:输入命令时可以只输入每个命令的第一个字母。例如:info registers可以只输入i r。
注意事项
如果在 vs code 目录中额外添加了文件夹,会导致调试不能够启动。
每次开始调试都需要使用 env 工具在 bsp 根目录使用code .命令打开 vs code 才能正常调试工程。
参考
env 工具使用手册
常见问题
env 工具的相关问题请参考 env 工具使用手册的常用资料链接小节。
提示找不到 ‘qemu-system-arm’。
解决方法:直接打开 vs code 调试工程会有这个错误,请使用 env 工具在 bsp 根目录使用code .命令打开 vs code 。
vs code 调试选项没有出现 debug@windows选项。
解决方法:请更新rt-thread源代码到3.1.0及以上版本。

SAN网络存储器的端口类型
一加8T成首款获权威机构A+认证的直屏旗舰机
基于光纤陀螺仪实现惯性测量系统的应用方案
影驰首款移动便携式SSD移动硬盘开卖 性价比相当给力
不朽的音响神话--300B 电子管
使用VS Code调试 RT-Thread qemu-vexpress-a9 BSP工程
中国宽带网络发展成效显著
杭州国芯凭借高安高清SoC芯片Sirius荣获本年度中国芯「优秀市场表现产品」奖
禁止加密货币和发展区块链两者有什么冲突吗
山西大学:在电化学传感器的设计和肿瘤标记物检测方面取得新进展
电子启辉器电路原理图
长焦镜头的发展 潜望式长焦镜头怎么分高下?
华为全联接大会2023 | 软通动力荣膺华为云“全球优秀总经销商”
区块链将会推动哪些行业的繁荣
未成年人闯红灯抓拍打码问题引热议 还需避免“以违法治违法”
CCC工厂检查的要求理解要点
热敏打印头过热保护模块电路分解
高盛调降苹果iPhone销量预测_ iPhone需求降低?
Verizon携手合作伙伴,为企业创造更安全的5G应用
Zephyr笔记:在STM32F429上运行HelloWorld