基于VSCODE+GDB+GDBSERVER远程单步调试设备篇(可视化界面)
-
目录
说明
配置方法
1)VSCODE必备插件
2)配置launch.json文件,用于GDB调试
调试步骤
目标板运行程序
1)已启动程序,通过attach方式进入调试
2)通过gdbserver启动时加载程序(程序路径根据实际情况填写)
vscode上启动gdb
1)连接远程开发板,点击爬虫
2)启动gdb调试
3)调试快捷键
说明
在嵌入式研发过程中,尤其是Linux环境下开发工程师,我相信很多都经历过通过GDB去单步调试程序,但通过命令方式时总会遇到过多的gdb命令、查看堆栈调度、内存等不方便情况(当然如果你是GDB指令集大神可忽略该文章)。由此看来如果有很好的IDE或者较好的插件集成GDB调试方式通过图形化的方式进行单步调试可提高研发效率。我所用过的有:eclipse与vscode等均是比较好用的,本章节重点介绍vscode通过插件方式实现远程调试。
-
配置方法
-
1)VSCODE必备插件
C/C++
C/C++ Extension Pack
GDB Debug
Remote Development

2)配置launch.json文件,用于GDB调试
{// 使用 IntelliSense 了解相关属性。// 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "${workspaceFolder}/output/bin/xcpserver","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}/","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"miDebuggerPath":"/opt/xilinx/sdk/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-xilinx-linux/aarch64-xilinx-linux-gdb","miDebuggerServerAddress":"192.168.1.10:9008"}]
}
上述配置参数解释,根据个人程序进行对应修改
顶层参数:version:版本号,指定配置文件的格式版本。当前值为 0.2.0,是 Visual Studio Code 的调试配置文件的常见版本。configurations:配置数组,其中每个对象定义一种调试配置。可以设置多个配置,用于不同的调试场景
顶层参数:
version:版本号,指定配置文件的格式版本。当前值为 0.2.0,是 Visual Studio Code 的调试配置文件的常见版本。
configurations:配置数组,其中每个对象定义一种调试配置。可以设置多个配置,用于不同的调试场景
配置字段:
name:配置名称,出现在调试面板中,用于选择调试配置。当前值为 "(gdb) 启动"
type:调试器的类型,当前值为 "cppdbg",表示使用 C++ 调试器扩展
request:调试请求的类型,当前配置为launch,可根据实际使用选择配置
launch:启动程序进行调试
attach:附加到已经运行的进程进行调试
program:要调试的可执行程序的路径,
当前值为 "${workspaceFolder}/output/bin/xcpserver"
${workspaceFolder} 是当前工作区根目录
xcpserver为具体需要远程调试得程序根据实际情况选择
argv:启动程序时传递的命令行参数,当前值为 [](空数组),表示不传递任何参数
stopAtEntry:是否在程序入口点处暂停,当前值为 false
true:在入口点暂停;false:直接运行到第一个断点或结束
cwd:调试器运行的工作目录,当前值为 "${workspaceFolder}/",即工作区根目录
environment:配置环境变量的数组,每个环境变量以 name 和 value 的形式指定,
当前值为 [],表示使用默认环境变量
externalConsole:是否使用外部终端来显示程序的标准输出,当前为fasle
true:使用外部终端;false:在 VS Code 的调试控制台中显示
MIMode:指定使用哪种调试器模式,当前值为 "gdb",表示使用 GNU 调试器(GDB)
setupCommands:调试器启动时运行的一组命令,通常用于设置调试器的行为
description:命令的描述,便于阅读和管理
text:实际执行的 GDB 命令
ignoreFailures:命令失败时是否忽略错误
当前配置包括:启用整齐打印:-enable-pretty-printing,用于以更友好的格式显示 STL 和其他复杂类型的内容;
设置反汇编风格为 Intel:-gdb-set disassembly-flavor intel,使 GDB 输出的反汇编代码使用 Intel 语法(而非 AT&T 语法)
miDebuggerPath:指定用于调试的 GDB 可执行文件路径,根据实际toolchain环境修改
/opt/xilinx/sdk/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-xilinx-linux/aarch64-xilinx-linux-gdb ,表明调试器是用于 AArch64 架构的交叉调试器
miDebuggerServerAddress:指定 GDB 远程调试服务器的地址,通常用于远程调试,当前值为 "192.168.1.10:9008";根据目标板得IP与绑定端口进行配置。
此配置文件主要用于:
- 在本地通过 VS Code 调试运行于远程设备(AArch64 架构)的程序。
- 配置了远程 GDB 调试环境(
miDebuggerServerAddress和miDebuggerPath)。 - 设置了常见的调试选项(例如整齐打印和 Intel 汇编语法)。
如果需要修改,可以根据实际项目需求调整路径、参数或调试行为
-
调试步骤
目标板运行程序
1)已启动程序,通过attach方式进入调试

gdbserver :9008 --attach 9149

2)通过gdbserver启动时加载程序(程序路径根据实际情况填写)
gdbserver :9008 ./xcpserver

vscode上启动gdb
1)连接远程开发板,点击爬虫

2)启动gdb调试



3)调试快捷键
F5停止运行、开始运行;
F10执行下一步;
F11进入函数执行;
相关文章:
基于VSCODE+GDB+GDBSERVER远程单步调试设备篇(可视化界面)
目录 说明 配置方法 1)VSCODE必备插件 2)配置launch.json文件,用于GDB调试 调试步骤 目标板运行程序 1)已启动程序,通过attach方式进入调试 2)通过gdbserver启动时加载程序(程序路径根据实际情…...
CamemBERT:一款出色的法语语言模型
摘要 预训练语言模型在自然语言处理中已无处不在。尽管这些模型取得了成功,但大多数可用模型要么是在英语数据上训练的,要么是在多种语言数据拼接的基础上训练的。这使得这些模型在除英语以外的所有语言中的实际应用非常有限。本文探讨了为其他语言训练…...
0基础跟德姆(dom)一起学AI 自然语言处理18-解码器部分实现
1 解码器介绍 解码器部分: 由N个解码器层堆叠而成每个解码器层由三个子层连接结构组成第一个子层连接结构包括一个多头自注意力子层和规范化层以及一个残差连接第二个子层连接结构包括一个多头注意力子层和规范化层以及一个残差连接第三个子层连接结构包括一个前馈全连接子层…...
我的创作纪念日——我与CSDN一起走过的365天
目录 一、机缘:旅程的开始 二、收获:沿路的花朵 三、日常:不断前行中 四、成就:一点小确幸 五、憧憬:梦中的重点 一、机缘:旅程的开始 最开始开始写博客是在今年一二月份的时候,也就是上一…...
C++:bfs解决多源最短路与拓扑排序问题习题
1. 多源最短路 其实就是将所有源头都加入队列, 01矩阵 LCR 107. 01 矩阵 - 力扣(LeetCode) 思路 求每个元素到离其最近0的距离如果我们将1当做源头加入队列的话,无法处理多个连续1的距离存储,我们反其道而行之&…...
【面试题】JVM部分[2025/1/13 ~ 2025/1/19]
JVM部分[2025/1/13 ~ 2025/1/19] 1. JVM 由哪些部分组成?2. Java 的类加载过程是怎样的?3. 请你介绍下 JVM 内存模型,分为哪些区域?各区域的作用是什么?4. JVM 垃圾回收调优的主要目标是什么?5. 如何对 Jav…...
文献综述相关ChatGPT提示词分享
文献综述 ChatGPT 可以帮助提高文献综述的有效性和全面性。ChatGPT可以高效搜索和审查与宝子们课题研究相关的文献资料来源。一些给力的插件工具还可以帮助您总结复杂的研究论文并提取信息以更快更好地消化信息。合理的运用ChatGPT和GPTs可以提高文献综述的清晰度和质量&#…...
Excel 技巧14 - 如何批量删除表格中的空行(★)
本文讲如何批量删除表格中的空行。 1,如何批量删除表格中的空行 要点就是按下F5,然后选择空值条件以定位所有空行,然后删除即可。 按下F5 点 定位条件 选 空值,点确认 这样就选中了空行 然后点右键,选 删除 选中 下方…...
图片生成Prompt编写技巧
1. 图片情绪(场景氛围) 一张图片一般都会有一个情绪基调,因为作画本质上也是在传达一些情绪,一般都会借助图片的氛围去转达。例如:比如家庭聚会一般是欢乐、喜乐融融。断壁残垣一般是悲凉。还有萧瑟、孤寂等。 2.补充细…...
【STM32-学习笔记-4-】PWM、输入捕获(PWMI)
文章目录 1、PWMPWM配置 2、输入捕获配置3、编码器 1、PWM PWM配置 配置时基单元配置输出比较单元配置输出PWM波的端口 #include "stm32f10x.h" // Device headervoid PWM_Init(void) { //**配置输出PWM波的端口**********************************…...
TOSUN同星TsMaster使用入门——3、使用系统变量及c小程序结合panel面板发送报文
本篇内容将介绍TsMaster中常用的Panel面板控件以及使用Panel控件通过系统变量以及c小程序来修改信号的值,控制报文的发送等。 目录 一、常用的Panel控件介绍 1.1系统——启动停止按钮 1.2 显示控件——文本框 1.3 显示控件——分组框 1.4 读写控件——按钮 1.…...
【Web】2025-SUCTF个人wp
目录 SU_blog SU_photogallery SU_POP SU_blog 先是注册功能覆盖admin账号 以admin身份登录,拿到读文件的权限 ./article?filearticles/..././..././..././..././..././..././etc/passwd ./article?filearticles/..././..././..././..././..././..././proc/1…...
React进阶之react.js、jsx模板语法及babel编译
React React介绍React官网初识React学习MVCMVVM JSX外部的元素props和内部的状态statepropsstate 生命周期constructorgetDerivedStateFromPropsrendercomponentDidMount()shouldComponentUpdategetSnapshotBeforeUpdate(prevProps, prevState) 创建项目CRA:create-…...
在Linux上如何让ollama在GPU上运行模型
之前一直在 Mac 上使用 ollama 所以没注意,最近在 Ubuntu 上运行发现一直在 CPU 上跑。我一开始以为是超显存了,因为 Mac 上如果超内存的话,那么就只用 CPU,但是我发现 Llama3.2 3B 只占用 3GB,这远没有超。看了一下命…...
R 语言科研绘图第 20 期 --- 箱线图-配对
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
suctf2025
Suctf2025 --2标识为看的wp,没环境复现了 所有参考资料将在文本末尾标明 WEB SU_photogallery 思路👇 构造一个压缩包,解压出我们想解压的部分,然后其他部分是损坏的,这样是不是就可以让整个解压过程是出错的从而…...
Quinlan C4.5剪枝U(0,6)U(1,16)等置信上限如何计算?
之前看到Quinlan中关于C4.5决策树算法剪枝环节中,关于错误率e置信区间估计,为啥 当E=0时,U(0,1)=0.75,U(0,6)=0.206,U(0,9)=0.143? 而当E不为0时,比如U(1,16)=0.157,如图: 关于C4.5决策树,Quinlan写了一本书,如下: J. Ross Quinlan (Auth.) - C4.5. Programs f…...
计算机组成原理--笔记二
目录 一.计算机系统的工作原理 二.计算机的性能指标 1.存储器的性能指标 2.CPU的性能指标 3.系统整体的性能指标(静态) 4.系统整体的性能指标(动态) 三.进制计算 1.任意进制 > 十进制 2.二进制 <> 八、十六进制…...
麒麟系统中删除权限不够的文件方法
在麒麟系统中删除权限不够的文件,可以尝试以下几种方法: 通过修改文件权限删除 打开终端:点击左下角的“终端”图标,或者通过搜索功能找到并打开终端 。定位文件:使用cd命令切换到文件所在的目录 。修改文件权限&…...
自定义提示确认弹窗-vue
最初可运行代码 弹窗组件代码: (后来发现以下代码可运行,但打包 typescript 类型检查出错,可打包的代码在文末) <template><div v-if"isVisible" class"dialog"><div class&quo…...
Unity安卓构建实战指南:解决APK真机安装闪退与构建失败
1. 这不是一本“从零开始”的书,而是一份你真正上手Unity安卓游戏开发前必须撕开的说明书我带过三届Unity实习工程师,也帮二十多个独立开发者把Demo打包进Google Play。每次看到新人在“安卓构建失败”报错里反复挣扎,或者对着“IL2CPP编译卡…...
UE4动画蓝图实战:用双骨骼IK节点搞定手部穿模,附完整蓝图节点截图
UE4动画蓝图实战:双骨骼IK节点解决手部穿模的完整指南在角色动画开发中,手部穿模问题堪称"视觉杀手"。想象一下精心设计的角色挥拳时,拳头直接穿过墙壁或敌人身体——这种违和感足以毁掉整个场景的沉浸感。本文将彻底解决这个痛点&…...
古戏台构件声学特性的时域有限差分方法【附模型】
✨ 长期致力于时域有限差分法、窑洞、戏台、八字墙、共形技术研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)曲面共形网格快速生成算法: …...
如何快速掌握开源UE资产编辑器:UAssetGUI完整配置与实战指南
如何快速掌握开源UE资产编辑器:UAssetGUI完整配置与实战指南 【免费下载链接】UAssetGUI A tool designed for low-level examination and modification of Unreal Engine game assets by hand. 项目地址: https://gitcode.com/gh_mirrors/ua/UAssetGUI UAss…...
大佬推荐的网络安全学习路线(从基础到高级,超级详细)
大佬推荐的网络安全学习路线(从基础到高级,超级详细) 说起网络安全,你可能会担心它是一个过时的行业。有人说,网络安全快卷死了,你既要攻又要防,并且随着技术的发展,你还要不断地学…...
PCL 基于强度的双边滤波【2026最新版】
目录 一、算法原理 1、计算步骤 2、算法源码 3、函数解析 4、参考文献 二、代码实现 三、结果展示 四、滤波后未发生变化的原因 五、解决办法 六、结果展示 七、相关链接 本文由CSDN点云侠原创,博客长期更新,本文最近一次更新时间为:2026年5月24日。 一、算法原理 1、计算…...
氘可来昔替尼常见副作用为鼻咽炎头痛及腹泻,如何应对
任何口服药物的临床价值,都必须在疗效与安全性的天平上找到精准的平衡点。氘可来昔替尼以PASI 75应答率的全面胜出证明了自己在银屑病治疗中的卓越地位,而其不良反应谱同样经过了严苛的临床验证。鼻咽炎、头痛和腹泻构成了这款药物最需关注的三大安全信号…...
基于PGA2311的树莓派Hi-Fi模拟音量控制器设计与实现
1. 项目概述:为树莓派DAC打造的高品质模拟音量控制器玩过树莓派音频播放器的朋友都知道,用上像PCM1794A这类高性能DAC芯片后,音质确实能上一个台阶,但有个不大不小的麻烦:这类芯片本身不带音量控制。软件调音量&#x…...
从API Key管理视角看Taotoken平台的安全与审计功能
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从API Key管理视角看Taotoken平台的安全与审计功能 对于依赖大模型API进行开发的团队而言,API Key的管理与安全是项目稳…...
eqMac终极指南:macOS系统级音频均衡器免费使用教程
eqMac终极指南:macOS系统级音频均衡器免费使用教程 【免费下载链接】eqMac macOS System-wide Audio Equalizer & Volume Mixer 🎧 项目地址: https://gitcode.com/gh_mirrors/eq/eqMac 你是否曾经觉得Mac电脑的音质不够理想?想要…...
