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

VSCode +gdb+gdbserver远程调试arm开发板

一、下载编译器

  1. 从ARM官网下载gcc-arm编译器,编译器中自带gdb和gdbserver,可以省去自己编译

注:gdb是电脑端程序,gdbserver是arm开发板程序

arm官网链接:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

下载arm-gcc版本10.3在开发板上运行提示lib版本错误,所以下载了版本10.2

也可以直接把编译器文件夹下的库复制到开发板上。

如下图链接可以跳转下载旧版本arm-gcc

注:根据自己开发板内核架构下载对应的编译器,推荐下载和编译开发板系统接近的版本

如下是本次下载的arm-gcc

https://developer.arm.com/downloads/-/gnu-a

  1. 解压,根据自己压缩包格式自行百度

xz -dk gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf.tar.xz tar -xvf gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf.tar 
  1. 把gdbserver复制到开发板目录下

注:可以放/usr/bin目录下或者和程序放一个目录下。

gdbserver位置:直接把解压的文件夹打开搜索。

opt/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc/usr/bin

  1. 修改权限(如果可以执行跳过此步)

直接复制到开发板没有执行权限,要修改一下

chmod 777 gdbserver

二、配置VSCode

  1. VSCode安装插件

  1. 配置launch.json文件

主要修改下面几个参数:

  • "program": "可执行文件路劲(电脑端)",

arm-gcc编译生成在电脑上的程序路劲。

  • "miDebuggerPath": "arm-gdb路劲",

  • "miDebuggerServerAddress": "arm开发板ip:gdbserver监听端口"

例如开发板执行./gdbserver :1234 test,gdbserver监听端口写1234

  • "stopAtEntry": false,

false:按F5调试程序直接运行

true:停在main函数入口处

  • "preLaunchTask": "start debug",此句可以注释掉

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "test","type": "cppdbg","request": "launch","program": "out\\test","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "start debug","miDebuggerPath": "/opt/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gdb","miDebuggerServerAddress": "192.168.0.167:1234"}]
}

三、启动调试

测试代码

#include <stdio.h>
int main()
{int abc = 0;for (int i = 0; i < 10; i++){abc++;printf("%x\n",abc);}printf("%x\n",abc);printf("11111111111111");printf("11111111111111");printf("11111111111111");return 1;
}
  1. 编译代码

要加-g

arm-xxx-gcc -g main.c -o out/test
  1. 把编译好的test复制到开发板,如下启动开发板程序

./gdbserver :监听端口号 程序

./gdbserver  :1234  test

运行后如下显示

  1. 按F5启动VSCode调试,点击“仍要调试”

注:"preLaunchTask": "start debug",此句注释掉就没有下面弹窗提示

  1. 调试界面

四、arm-gdb运行出错

  1. gdb在电脑端运行报错,没有 libncursesw.so.5

执行ldd arm-xxx-gdb,查看依赖文件

系统缺少 libncursesw.so.5、libtinfo.so.5、libpython2.7.so.10

  • 在文件夹下/usr/lib/x86_64-linux-gnu把新版本6软链接为5

  • 安装libpython2.7

ln -s libncursesw.so.6.3 libncursesw.so.5
ln -s libtinfo.so.6.3 libtinfo.so.5apt-get install libpython2.7

相关文章:

VSCode +gdb+gdbserver远程调试arm开发板

一、下载编译器 从ARM官网下载gcc-arm编译器&#xff0c;编译器中自带gdb和gdbserver&#xff0c;可以省去自己编译。 注&#xff1a;gdb是电脑端程序&#xff0c;gdbserver是arm开发板程序 arm官网链接&#xff1a;https://developer.arm.com/downloads/-/arm-gnu-toolchain-d…...

阿里云大学考试python中级题目及解析-python高级

阿里云大学考试python高级题目及解析 1.以上代码输出结果为 a [1,2,3,None,(),[],] print(len(a))A.4 B.5 C.6 D.syntax error C 列表中元素可以存储任意数据类型 2.将字符串s 中的字母a替换为字母&#xff0c;以下代码正确的是 A.s.swap(“b”&#xff0c;“a”) B.s.r…...

基于FPGA的车牌识别

基于FPGA进行车牌识别 基于FPGA进行车牌识别 1. 文件说明2. 程序移植说明3. 小小的编程感想 本项目的原理讲解视频已经上传到B站“基于FPGA进行车牌识别”。 本项目全部开源&#xff0c;见我本人的Github仓库“License-Plate-Recognition-FPGA”。 1. 文件说明 小技巧&…...

Qt - 进程/线程 补充进阶

Qt - 进程/线程 补充进阶 多线程quit / eixt / terminate QThread例子tdicethread 类.h.cpp widget 类.h.cpp 线程同步 多线程 quit / eixt / terminate quit 应用程序或线程安全的取消事件处理队列的执行&#xff0c;并随后使线程退出&#xff08;如果只希望结束线程并保证它…...

spring笔记

spring 和 springboot的区别 自动配置原理 beanFactory接口和ApplicationContext接口 两个都是 IOC 容器 ApplicationContext接口是BeanFactory接口实现类的子类 功能&#xff1a; ApplicationContext扩展BeanFactory BeanFactoryApplicationContext控制反转国际化支持 …...

最大熵模型

最大熵模型&#xff08;maximum entropy model&#xff09;由最大熵原理推导实现 最大熵原理 最大熵原理是概率模型学习的一个准则。最大熵原理认为&#xff0c;学习概率模型时&#xff0c;在所有可能的概率模型&#xff08;分布&#xff09;中&#xff0c;熵最大的模型时最好…...

微服务中网关的配置

一、添加 Spring Cloud Gateway 依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency>二、配置网关路由 在application.yaml中配置如下内容&#xff1a…...

Linux基本指令实现4及热键指令详解

目录 Linux热键补充&#xff1a; 1.bc指令&#xff1a; Tab键的智能补充&#xff1a; ctrlc键&#xff1a; uname指令&#xff1a; lscpu指令&#xff1a; lsmem指令&#xff1a; df -h指令&#xff1a; 关机指令&#xff1a; 扩展指令&#xff1a; Linux热键补充&#…...

系统调用与API

系统调用介绍 什么是系统调用 为了让应用程序有能力访问系统资源&#xff0c;也为了让程序借助操作系统做一些由操作系统支持的行为&#xff0c;每个操作系统都会提供一套接口&#xff0c;以供应用程序使用。系统调用涵盖的功能很广&#xff0c;有程序运行所必需的支持&#xf…...

OpenPCDet系列 | 5.4.1 DenseHead中的AnchorGenerator锚框生成模块

文章目录 AnchorGenerator模块AnchorGenerator.generate_anchors函数 AnchorGenerator模块 首先&#xff0c;根据点云场景将其划分为一个个grid&#xff0c;这个grid size是可以通过配置文件设定的点云场景方位和voxel大小计算出来的。 POINT_CLOUD_RANGE: [0, -39.68, -3, 6…...

【开发者指南】如何在MyEclipse中使用HTML或JSP设计器?(上)

MyEclipse v2022.1.0正式版下载 一、HTML & JSP 可视化设计器 本文简要介绍了 MyEclipse HTML 和 JSP Web 设计器的概念、功能和基本操作过程。这两个设计器具有相似的功能和相同的操作模型&#xff0c;但本文为专门针对其类型的内容。本文档中的示例是使用 MyEclipse HT…...

Node开发Web后台服务

简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型&#xff0c;使其轻量又高效。Node.js 的包管理器 npm&#xff0c;是全球最大的开源库生态系统。 能方便地搭建响应速度快、易于扩展的网络应用&#…...

Linux下对mmap封装使用

Linux下对mmap封装使用 1、mmap简介2、Linux下mmap使用介绍2.1、mmap函数2.2、munmap函数 3、对mmap进行封装4、对封装类MEM_MAP进行测试5、mmap原理6、源代码下载 1、mmap简介 mmap即memory map&#xff0c;是一种内存映射文件的技术。mmap可以将一个文件或者其它对象映射到进…...

深入了解云计算:发展历程、服务与部署模型、未来趋势与挑战

开篇博主 bluetata 的观点&#xff1a;PaaS 服务必将是未来10年云计算权重最高的趋势&#xff08;05/02/2023 15:32&#xff09; 文章目录 一、前言二、认识了解云计算2.1 什么是云计算2.1.1 维基百科上的云计算定义2.1.2 NIST 标准云计算定义2.1.3 如果被面试如何解释云计算 2…...

使用乐鑫 Web IDE 助力物联网开发

乐鑫 Web IDE 是基于 Eclipse Theia 的框架&#xff0c;支持 ESP-IDF VS Code 插件同时具备多项辅助工具。您可以观看我们在 Espressif DevCon22 上的演示视频​​​​​​​&#xff0c;了解它的实际应用。 【乐鑫开发者大会-21】搭载 ESP-IDF Visual Studio Code 插件的乐鑫 …...

Maven(5)---Maven的部署和发布

Maven的部署和发布 在前面的博客中&#xff0c;我们已经学习了Maven的基础知识、依赖管理、插件和生命周期&#xff0c;以及多模块项目管理。本篇博客将介绍Maven的部署和发布功能。 什么是部署和发布 在软件开发过程中&#xff0c;部署和发布是非常重要的环节。部署是指将软…...

内网渗透之权限维持-黄金白银票据隐藏账户远控-RustDeskGotoHTTP

0x01权限维持-隐藏用户 CreateHiddenAccount工具 CreateHiddenAccount -u test -p Psswrd用户管理能查看到&#xff0c;命令查看看不到&#xff0c;单机版无法删除(不在任何组)&#xff0c;域环境(在administrator组中)可以删除 0x02权限维持-黄金白银票据 ⻩⾦票据⽣成攻…...

动态规划——带权活动选择

带权活动选择Time Limit: 3000 MSMemory Limit: 1000 KB Description 给定n个活动&#xff0c;活动ai表示为一个三元组(si,fi,vi)&#xff0c;其中si表示活动开始时间&#xff0c;fi表示活动的结束时间&#xff0c;vi表示活动的权重, si<fi。带权活动选择问题是选择一些活…...

软考A计划-真题-分类精讲汇总-第十八章(面向对象程序设计)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…...

【C++ 入坑指南】(09)数组

文章目录 简介一维数组1. 定义2. 特点3. 用途4. 示例 二维数组1. 定义2. 用途3. 示例 简介 C 支持数组数据结构&#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量。 一维数组 1. 定义…...

从零实现PyTorch风格迁移:剖析VGG19特征提取与损失函数设计

1. 风格迁移的核心原理与VGG19的选择 第一次看到梵高风格的风景照时&#xff0c;我完全被这种技术震撼了。后来才知道&#xff0c;这背后的核心是特征分离与重组——把内容图像的结构信息与风格图像的纹理信息拆解后重新组合。而VGG19之所以成为风格迁移的经典选择&#xff0c;…...

Cursor Pro免费激活终极指南:突破API限制的完整技术解决方案

Cursor Pro免费激活终极指南&#xff1a;突破API限制的完整技术解决方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached yo…...

openclaw平替之nanobot源码解析(六):子智能体(Subagents)试

插件化架构 v3 版本最大的变化是引入了模块化插件系统。此前版本中集成在核心包里的原生功能&#xff0c;现在被拆分成独立的插件。 每个插件都是一个独立的 Composer 包&#xff0c;包含 Swift 和 Kotlin 代码、权限清单以及原生依赖。开发者只需安装实际用到的插件&#xff0…...

RecursiveCharacterTextSplitter类解读

基于 LangChain 当前官方文档与官方源码/参考入口&#xff0c;RecursiveCharacterTextSplitter 可以这样理解&#xff1a; 文章目录1) 切分原理2) 关键参数3) 方法接口4) 适用边界5) 中文场景优化6&#xff09;核心类方法的使用1. split_text(text: str) -> list[str]2. cre…...

2026智慧农业行业趋势白皮书

白皮书立足 “十四五” 农业发展成果&#xff0c;前瞻 “十五五” 农业现代化方向&#xff0c;围绕种植业领域&#xff0c;系统分析我国农业现状、农业 4.0 核心内涵、关键技术、应用场景及未来趋势&#xff0c;明确智慧农业是农业高质量发展的核心路径。关注公众号&#xff1a…...

claw-code 源码分析:大型移植的测试哲学——如何用 unittest 门禁守住「诚实未完成」的口碑?

涉及源码&#xff1a;tests/test_porting_workspace.py、src/setup.py、src/parity_audit.py、src/main.py、src/hooks/__init__.py、src/execution_registry.py&#xff1b;对照 Rust rust/crates/compat-harness 中「无夹具则早退」的测试写法。1. 门禁长什么样&#xff1a;单…...

现在好用的 AI 大模型,到底有哪些?怎么收费?一文整理清楚

这两年&#xff0c;大模型最大的变化&#xff0c;不是“谁最强”。 而是&#xff1a;已经没有一个模型&#xff0c;能把所有事都做成第一。 你写代码&#xff0c;可能会先想到 Claude。你做日常办公和综合问答&#xff0c;很多人会选 ChatGPT。你要多模态、生态和搜索联动&…...

别再只盯着复现了!从CVE-2022-10270看企业内网向日葵客户端的隐形风险与排查指南

企业内网向日葵客户端隐形风险排查实战手册 向日葵远程控制软件在企业内网中的广泛使用&#xff0c;为IT运维带来了便利&#xff0c;同时也埋下了安全隐患。2022年曝光的CVE-2022-10270漏洞让企业安全团队意识到&#xff0c;仅依靠终端用户自主更新远远不够。本文将系统性地介绍…...

CMake构建类型全解析:Debug、Release、RelWithDebInfo、MinSizeRel到底怎么选?

CMake构建类型全解析&#xff1a;Debug、Release、RelWithDebInfo、MinSizeRel到底怎么选&#xff1f; 在软件开发的世界里&#xff0c;构建类型的选择往往决定了最终产品的表现形态。就像摄影师会根据不同场景选择光圈大小一样&#xff0c;开发者也需要根据项目阶段和需求选择…...

告别卡顿与延迟:ET框架帧同步核心技术解密

告别卡顿与延迟&#xff1a;ET框架帧同步核心技术解密 【免费下载链接】ET Unity3D Client And C# Server Framework 项目地址: https://gitcode.com/GitHub_Trending/et/ET 你是否还在为多人对战游戏中的角色瞬移、技能不同步而烦恼&#xff1f;作为Unity3D客户端和C#服…...