首页 > 其他分享 >vscode+gdbserver远程调试ARM环境搭建

vscode+gdbserver远程调试ARM环境搭建

时间:2024-04-18 10:33:50浏览次数:16  
标签:gnueabihf vscode gdbserver none arm gdb linux ARM

 一、编译gdbserver

1. 下载gdb

    http://ftp.gnu.org/gnu/gdb/

2.解压缩

   tar xf gdb-8.0.tar.xz

3. 交叉编译

   cd gdb/gdbserver/
  ./configure --host=arm-none-linux-gnueabihf --target=arm-none-linux-gnueabihf --program-prefix=arm-none-linux-gnueabihf- --prefix=/home/xman/gdb-8.0/binsvr
   make
   make install

    将/home/xman/gdb-8.0/binsvr/gdbserver 拷贝到ARM开发板/bin

【错误及解决】
(1)linux-ptrace 编译错误:

           In file included from ../../gdb/nat/linux-ptrace.c:20:
           ../../gdb/nat/linux-ptrace.h:180:22: 错误:expected identifier before numeric constant 180 | # define TRAP_HWBKPT 4
          解决: gdb/nat/linux-ptrace.c 删除 #include "gdb_wait.h"    #include "gdb_ptrace.h"
                      gdb/nat/linux-ptrace.h 中在 #include "nat/gdb_ptrace.h" 下增加  #include "gdb_wait.h"
          参见 https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/commit/e6600bbefd667810744fbe8eed3830bf5644c354

(2)makeinfo: not found

          解决:sudo apt-get install texinfo

二、vscode配置

1. 安装插件:

     vscode ssh连接到交叉编译环境主机(如VMware中ubuntu),安装c/c++插件

 2. 配置launch.json

{     // Use IntelliSense to learn about possible attributes.     // Hover to view descriptions of existing attributes.     // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387     "version": "0.2.0",     "configurations": [         {             "name":"(gdb)launch",             "type":"cppdbg",             "request": "launch",             "program": "/home/xman/demo/test_main",             "args": [],             "stopAtEntry": false,             "miDebuggerPath": "/usr/.../bin/arm-none-linux-gnueabihf-gdb",             "miDebuggerServerAddress": "192.168.0.45:8889",             "environment": [],             "externalConsole": false,             "MIMode": "gdb",             "cwd": ".",             "setupCommands": [                 {                     "description": "sysroot",                     "text": "set sysroot target:/"                 },                 {                     "description": "prettyprint",                     "text": "-enable-pretty-printing",                     "ignoreFailures": true                 },                 {                     "description": "follow-fork-mode_child",                     "text": "set follow-fork-mode child"                 }             ]         }     ] }

三、开始调试

1. ARM开发板上启动gdbserver,调试守护进程pid(如32101, 可执行文件为 test_main)

      # gdbserver :8889 --attach 32101

 

 2. gdb客户端(PC 命令行)

$ arm-none-linux-gnueabihf-gdb test_main
……(省略命令输出)

(gdb) target remote 192.168.0.45:8889
(gdb) set sysroot target:/
(gdb) set follow-fork-mode child
(gdb) b x_function
(gdb) c

【问题与解决】 

(1) PC上运行arm-none-linux-gnueabihf-gdb时报错:

          Could not find platform independent libraries <prefix>

          Could not find platform dependent libraries <exec_prefix>

          Consider setting $PYTHONHOME to [:<exec_prefix>])

          ImportError: No module named site

         原因:可能没有安装 arm-none-linux-gnueabihf-gdb 依赖的 python版本

          解决:readelf -d arm-none-linux-gnueabihf-gdb  查看gdb依赖的python库版本,如依赖2.7

 安装python2.7:  sudo apt-get install python2.7

                              sudo apt-get install libpython2.7

(2)安装python2.7后 undefined symbol: PyUnicodeUCS4_FromEncodedObject

         原因: 在PATH某个交叉工具链路径下也包含了libpython2.7.so.1.0但其内没有定义函数PyUnicodeUCS4_FromoEncodedObject

        解决:删除该路径下的libpython2.7.so.1.0,使用安装的libpython2.7

3 gdb客户端(vscode)

   可以在代码中添加断点,发起gdb调试了。

 

标签:gnueabihf,vscode,gdbserver,none,arm,gdb,linux,ARM
From: https://www.cnblogs.com/rtthread/p/18141017

相关文章

  • vscode python开发插件
    05GitGraph这玩意可是Git神器,堪比Pycharm内的Git管理器。通过这个扩展,可以清楚地看见当前分支的commit记录和变化,可以通过按钮的方式轻易地创建、切换分支、cherrypick、merge等操作。对比分支、查看未提交的修改……还有许多可定制的扩展设置。08autoDocstring这个扩......
  • Mac(M1)配置基于ARM64的Tensorflow
    以下步骤最好先执行condaconfig--remove-keychannels 删除conda镜像源pipconfigunsetglobal.index-url 删除pip镜像源然后接下来的步骤最好挂上梯子。1.下载miniforge:从https://github.com/conda-forge/miniforge上找到arm64(AppleSilicon)版本进行下载,下一步下一步的......
  • 在pycharm里边怎么设置代码背景图的?
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【Kim】问了一个Python问题,然后他发出来的代码如下图所示:可以看到代码中有背景图,是不是看上去蛮高大上的?那么这个背景图是怎么加上去的呢?这里给大家介绍一下方法。二、实现过程这里【Kim】说到,这个是我vsode使用的......
  • HarmonyOS NEXT应用开发之Axios获取解析网络数据
    介绍本示例介绍使用第三方库的Axios获取GBK格式的网络数据时,通过util实现GBK转换UTF-8格式。该场景多用于需要转换编码格式的应用。效果图预览使用说明直接进入页面就可获取GBK格式的用户名信息并进行解码操作。实现思路使用第三方库Axios获取网络数据,并将获取数据类型设......
  • vscode remote-x11 ssh 连接时Another All configured authentication methods failed
    错误remote-x11-ssh插件使用ssh2扩展出现以下错误https://github.com/joelspadin/vscode-remote-x11/issues/75Error:Allconfiguredauthenticationmethodsfailed原因https://github.com/mscdex/ssh2/issues/989解决换成ed25519并修改配置......
  • HarmonyOS NEXT应用开发之图片缩放效果实现
    介绍图片预览在应用开发中是一种常见场景,在诸如QQ、微信、微博等应用中均被广泛使用。本模块基于Image组件实现了简单的图片预览功能。使用说明:双指捏合缩放图片大小双击图片进行图片的大小切换图片在放大模式下,滑动图片查看图片的对应位置效果图预览实现思路image组......
  • 11_QT跨平台运行之把QT程序交叉编译到ARM开发板
    QT跨平台运行之把QT程序交叉编译到ARM开发板交叉编译QT代码步骤一:给QT程序布局,然后在构造函数添加自动设置屏幕大小的代码。代码如下:#include<QDesktopWidget>#include<QStyle>#include<QRect>QDesktopWidget*deskTopWidget=QApplication::desktop();QRectdeskRec......
  • HarmonyOS 优化布局性能
    背景介绍 用户界面(UI)布局是应用程序中至关重要的部分,它不仅影响应用的外观和用户体验,还直接影响应用的性能。不合理的布局可能会导致过度的布局计算和界面嵌套,从而增加渲染和计算的开销,导致性能下降。 常用布局方式 HarmonyOS的ArkUI框架提供了多种布局方式,包括线性布局......
  • HarmonyOS 性能优化
    如何合理使用动效来获得更好的性能组件转场动画使用transition:推荐使用转场动画(transition)而不是组件动画(animateTo),因为transition只需要在条件改变时更新一次,而animateTo需要在动画前后做两次属性更新,导致性能开销更大。反例:通过改变透明度属性并使用animateTo来......
  • HarmonyOS 项目 module.json5默认配置属性及描述
    module.json5entry>src>main>module.json5是模块的配置文件,包含当前模块的配置信息。 其中module对应的是模块的配置信息,一个模块对应一个打包后的hap包,hap包全称是HarmonyOSAbilityPackage,其中包含了ability、第三方库、资源和配置文件。其具体属性及其描述可以参照下表1。......