当前位置: 首页 > 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

http://www.lryc.cn/news/69394.html

相关文章:

  • 阿里云大学考试python中级题目及解析-python高级
  • 基于FPGA的车牌识别
  • Qt - 进程/线程 补充进阶
  • spring笔记
  • 最大熵模型
  • 微服务中网关的配置
  • Linux基本指令实现4及热键指令详解
  • 系统调用与API
  • OpenPCDet系列 | 5.4.1 DenseHead中的AnchorGenerator锚框生成模块
  • 【开发者指南】如何在MyEclipse中使用HTML或JSP设计器?(上)
  • Node开发Web后台服务
  • Linux下对mmap封装使用
  • 深入了解云计算:发展历程、服务与部署模型、未来趋势与挑战
  • 使用乐鑫 Web IDE 助力物联网开发
  • Maven(5)---Maven的部署和发布
  • 内网渗透之权限维持-黄金白银票据隐藏账户远控-RustDeskGotoHTTP
  • 动态规划——带权活动选择
  • 软考A计划-真题-分类精讲汇总-第十八章(面向对象程序设计)
  • 【C++ 入坑指南】(09)数组
  • Vue.js
  • 博士毕业答辩流程 注意事项
  • 拼多多开放平台订单详情接口解析
  • 如何把ipa文件(iOS安装包)安装到iPhone手机上? 附方法汇总
  • 由浅入深了解 深度神经网络优化算法
  • LIN-报文结构
  • 南京邮电大学通达学院2023c++实验报告(三)
  • ISO9000和ISO9001有哪些区别?
  • 第7章异常、断言和曰志
  • springboot读取和写入csv文件数据
  • 【产品经理】工作交接