gdbserver配置、远程调试以及ssh配置

2023-11-17

引言

GDB调试主要有两种方法:

(1)直接在目标板上通过gdb调试程序

(2)在目标板上通过gdbserver运行程序,在宿主机上通过gdb调试程序

本篇文章主要来说明一下gdbserver远程调试的方法,主要以VScode举例说明:

步骤

一、VScode配置

1)安装VScode软件,可直接去官网下载。

2)安装ssh插件

3)登录远程服务器:ctrl+shift+p调出用于执行命令的输入框,输入remote-ssh:add new ssh host,用于添加新的SSH主机。

4)按照:ssh 用户名@ubuntu 服务器IP 的格式进行添加ssh主机,输入示例:ssh root@192.0.10.10

 5)选择第一个会将远程服务器用户名、IP存在config文件中

6)ctrl+shift+p调出用于执行命令的输入框,输入remote-ssh:connect to host,用于连接到SSH主机。

 选择平台的远程主机:

 输入密码后,选择打开的文件夹即可;

二、远程调试

1)创建launch.json文件,此文件就是用于调试的配置文件。

2)选择调试器后,会自动生成launch.josn文件,在该文件中需要进行修改配置,实例配置如下:

{
    // 使用 IntelliSense 了解相关属性。
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",
    "configurations": [
        {
            "name": "sdk-debug",
            "type": "cppdbg",
            "request": "launch",
            "miDebuggerPath": "aarch64-linux-gnu-gcc-gdb",
            "miDebuggerServerAddress": "192.0.10.10:1789",
            "program": "${workspaceFolder}/.a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "logging": {
                "engineLogging": false
            },
            "MIMode": "gdb",
        }
    ]
}

详见:Debugging in Visual Studio Code

launch.json文件需要修改的地方就是program字段、miDebuggerServerAddress字段,${workspaceFolder}是指刚才打开的远程文件夹,只需要在后面指定待调试程序的名称即可。stopAtEntry字段,默认是false,这是指开始调试的时候是否在main函数断点,所以改为true。其他使用默认的就行。

name:配置名称,将会在调试配置下拉列表中显示。

type:调试器类型。

request:调试方式。

miDebuggerPath:调试器位置。

miDebuggerServerAddress:用于远程调试连接的调试器服务器(设备)

program:要调试的程序(完整路径,支持相对路径)。

args:传递给上面程序的参数,没有参数留空即可。

stopAtEntry:是否停在程序入口点(停在main函数开始)。

cwd:调试程序时的工作目录

environment:要添加的环境变量。

externalConsole:调试时是否显示控制台窗口。

MIMode:VSCode要使用的调试工具。

3)远程设备开启gdbserver

首先在设备端开启:./gdbserver :1789 libsdk(这里的1789要和miDebuggerServerAddress里的1789保持一致)注:gdbserver使用时需要拷贝到设备上。

其次在VScode上:

 三、SSH免密登录

1)配置环境变量

右击此电脑->属性->高级系统设置->环境变量->新建->确定

选择用户变量而非系统变量下方的 新建 新建以下环境变量:

输入变量名为:SSH_PATH

变量值:C:\Windows\System32\OpenSSH\

再选择用户变量中的 PATH 编辑,添加以下两个对象:

%SYSTEMROOT%\System32\OpenSSH\

C:\Windows\System32\OpenSSH

2)判断是否安装ssh成功

Win+R cmd

ssh -V 查看版本号,查看到即安装成功。

3)在本地生成密钥对

ssh-keygen   一路回车

4)服务器

在服务器找到home\用户名\.ssh文件夹(没有的话使用命令mkdir .ssh新建);

若有.ssh文件夹,查看其中是否包含名为authorized_keys的文件,若无,使用touch authorized_keys命令创建;

打开上述authorized_keys文件,将本地Windows系统上的id_rsa.pub里面的内容拷贝到authorized_keys中保存即可。

四、注意事项

1)当调试的程序和设备上的程序不一致时,VScode调试控制台会输出以下错误:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gdbserver配置、远程调试以及ssh配置 的相关文章

  • Flex/Bison IDE? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个良好的开发环境 可以在 Flex 或 Bison 或两者上工作 是否有任何 IDE 具有
  • 如何在 Visual Studio 的输出窗口中隐藏异常类型?

    我正在测试一些东西 输出窗口中充满了异常 如何过滤输出窗口中显示的异常类型 Note 在这种情况下 不可能避免异常 据我所知 隐藏异常类型是不可能的 但要过滤掉所有异常消息 请右键单击输出窗口并取消选中 异常消息
  • Clojure 开发:IDE 还是 REPL?

    我已经使用 Clojure 一段时间了 想要创建一些比玩具更大 更复杂的项目 过去几年我一直在使用 Java 并且已经习惯了 IDE 为我所做的事情 编译大量类 将它们打包在 jar 中 创建批处理文件供用户启动它们 当我查看 Clojur
  • 如何调试肉桂小程序?

    我想写一个肉桂小程序 这些都是基于 JavaScript 的 我希望编写的代码更改服务 打开和关闭它们 类似于WebDeveloper菜单小程序 https bitbucket org infiniteshroom cinnamon web
  • 在 Ubuntu18 上打开 Spyder3 时缺少依赖项导致密钥环错误?

    我对编程之类的东西相当陌生 我正在尝试使用 Spyder3 但不断收到此错误 如下 我使用的是Geforce 1080ti Ubuntu 18 04 01 python3 3 6 python2没有安装 我尝试了 pip3 install
  • 哪个 IDE 支持 Node.js 应用程序的 CoffeeScript 调试(源映射、断点和调用堆栈)?

    我对整个 CoffeeScript 场景还很陌生 是否有任何 IDE 支持调试在 Node js 上运行的 CoffeeScript 源代码 我希望能够在 coffee 文件中设置断点并查看调用堆栈并检查变量 WebStorm 似乎还不符合
  • python - Atom IDE 如何启用自动完成代码以查看模块中的所有函数

    我正在为我的 python 项目使用atom IDE 在某些情况下有自动完成建议 但我想知道是否可以列出导入模块具有的所有可能功能 例如 如果我导入import urllib当我打字时urlib 并按 ctrl tab 想要查看包含可能使用
  • 如何在 IDE 中使用 Grails 依赖项

    So I finally https stackoverflow com questions 1867064 grails and local maven dependencies让我的依赖项与 Grails 一起工作 现在 我的 IDE
  • 在 Visual Studio 中进行嵌入式代码开发(尤其是使用 C18 的 PIC)

    我使用 Visual Studio 编写桌面应用程序 我发现它非常用户友好且易于使用 如果可能的话 我还想在Visual Studio中编写嵌入式代码 例如 是否可以使用 C18 或任何其他类似的基于 C 的语言为 PIC18Fxxx 系列
  • Sublime Text 2 在 Java 开发方面是否胜过 Eclipse [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 免费的 C 语言 IDE? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 谷歌搜索 c ide C 会产生太多 C 结果以及不相关的结果 这些搜索词似乎太短 无法产生相关结果 有人有免费的 Win32 C IDE
  • 设置 xamarin studio 以与 PCL 和 MVVMCross 配合使用

    我真的很喜欢 Xamarin Studio 并且正在寻找一个模板解决方案来开始使用 MvvmCross 开发跨设备应用程序 但我找不到如何将项目设置为与 Xamarin Studio 一起使用 PCL 和 MvvmCross 如果有人能给我
  • Delphi预定义环境变量

    谁能告诉我在哪里可以找到 RAD Studio 中可用的 伪 环境变量列表 例如 Platform Config 等 具体来说 我想要一个能够为我提供 RTL 版本的版本 以便我可以将编译单元 dcu 放入正确的目录中 即 XE为D15 X
  • 设置 eclipse 进行 Windows 驱动程序开发

    我正在尝试使用 WDK 7 1 0 编写用户模式 Windows XP Vista 和 7 虚拟打印机驱动程序 我打算使用 eclipse IDE 进行开发 所以想知道是否可以进行相同的设置 我希望做以下事情 1 Eclipse 能够识别
  • Visual Studio Professional 2013 Update 5 中的“在线服务不可用”问题

    我一直在 vscode 2013 工作直到今天 但是 当我今天早上尝试打开 IDE 时 它收到 您的许可证已过时 必须更新 错误消息 如下所示 在我尝试更新许可证和登录操作之后 当我尝试这两个时 它得到 在线服务不可用 请稍后重试 错误消息
  • 在 Codeblocks 中启用编译器输出窗格

    This is probably a really noob question but the fact of the matter is that my Code blocks wouldn t show me errors when i
  • Netbeans 版本控制文件颜色代码?

    我试图找到一个图例来帮助解释 NetBeans 用于描述文件状态的不同颜色 我的一些文件颜色是 Grey Blue Green 还有其他我还没有发现的 如果有帮助 我将使用带有 CVS 的 Netbeans 6 7 这些颜色是什么 绿色意味
  • 如何在浏览模式下禁用 RStudio 中的查看模式

    Is there a way to disable the View mode in RStudio when debugging functions 代码示例 myfun lt function browser myfun 我知道它不开放
  • VBA:新集合 -> 模块不是有效类型

    我尝试使用集合作为函数的一部分 但是在编译时不断收到错误 模块不是有效类型 即使该函数只是定义一个集合 我也会得到相同的结果 Function CountUniqueTags Dim table As Collection Set tabl
  • 设置 Emacs 进行 Erlang 编程

    Emacs 是 Erlang 编程的首选 IDE 有很多好的模式 distel erlware mode 默认的 erlang 模式 但是您对设置 Emacs 进行专业 Erlang 开发有何建议 按照中所述设置 erlang mode自述

随机推荐

  • 2012腾讯校园招聘笔试成都站回忆版

    腾讯的笔试题目比较基础 具体的题目记不清除了 设计到的知识点 1 c语言基础 sizeof strlen的用法 2 linux基本命令umask 3 SQL语言 4 数据结构的知识 建立二叉树 顺序表操作的复杂度 5 操作系统的知识 通过页
  • c语言scanf用法

    C语言中scanf的用法和注意事项 scanf概念 scanf是格式输入函数 功能是在屏幕上输入指定的信息 简单的来说和printf相似却不相同 scanf调用格式 scanf lt 格式化字符串 gt lt 地址表 gt 如 includ
  • C Primer Plus 第六章编程练习

    第六章 编程练习 6 1 题 目 编写一个程序 创建一个包含26个元素的数组 并在其中储存26个 小写字母 然后打印数组的所有内容 完成时间 2020 2 3 作 者 林夕
  • 【项目实战】大文件断点续传,搞起

    今天给大家分享的又是一篇实战文章 也是最近私活里遇到的 万能的互联网给了我办法 分享一下 背景 最近接到一个新的需求 需要上传2G左右的视频文件 用测试环境的OSS试了一下 上传需要十几分钟 再考虑到公司的资源问题 果断放弃该方案 一提到大
  • MJRefresh原理分析

    MJRefresh是流行的下拉刷新控件 前段时间为了修复一个BUG 读了它的源码 本文总结一下实现的原理 下拉刷新的基本原理 大部分的下拉刷新控件 都是用contentInset实现的 默认情况下 如果一个UIScrollView的左上角在
  • CNN进行非接触掌纹识别的改进过程

    1 模型和参数不变 模型 2个卷积层 1个全连接层 参数 BATCH SIZE 32 定义超参数 每次处理32张图片 EPOCHS 20 将数据集训练20轮 LR 0 01 学习率 TRAIN DIVISION 3 训练集划分占比 opti
  • 小程序上线流程

    1 配置服务器域名 小程序接口API 2 业务域名配置 首先配置小程序的业务域名 将下载txt文件放在A 域名根目录下 然后才可以配置业务域名为 A 主要应用场景为 小程序页面跳转其他小程序 3 npm run build weapp 编译
  • 【数据库复习】第二章关系数据库

    目录 一 关系数据结构及形式化定义 1 1关系 1 2关系模式 1 3关系数据库 1 4关系模型的存储结构 二 关系操作 三 关系的完整性 四 关系代数 4 1传统的集合运算 4 2专门的关系运算 4 2 1选择 selection 4 2
  • const int & a = 1;

    int a 1 报错 引用需要一个合法的内存空间 const int a 1 正确 类似于int temp 1 const int a temp
  • String时间类型转换为ZonedDateTime时间类型

    搞了一个早上 不知道怎么弄这个东西 最后发现没有必要将ZonedDateTime写的很全 可以精简的封装 public static ZonedDateTime changeShanghaiToUTC String beijingDateT
  • 【MIUI9】小米平板1MIPAD1欧版ROM历史ROM下载地址-另附挥泪典藏版V9系统

    费劲整理来的 上边是 小米平板1 MIPAD1的 ROM 下边是MI3W小米3联通版的ROM 欧版xiaomi eu系统的好处就是省电 miui MIPAD V9 2 4 0 KXFCNEK 97354839c6 4 4 zip 这个是小米
  • com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message

    报错 com mongodb MongoSocketReadTimeoutException Timeout while receiving message at com mongodb connection InternalStreamC
  • C++ list容器详解

    C list容器 list容器的基本概念 1 list的构造函数 2 list的赋值和交换 3 list的大小操作 4 list的插入和删除 5 list的数据存取 6 list的反转与排序 7 list的排序案例 list容器的基本概念
  • Vue 源码解读(12)—— patch

    当学习成为了习惯 知识也就变成了常识 感谢各位的 关注 点赞 收藏和评论 新视频和文章会第一时间在微信公众号发送 欢迎关注 李永宁lyn 文章已收录到 github 仓库 liyongning blog 欢迎 Watch 和 Star 前言
  • linux系统提示只读文件系统,无法创建文件

    可能磁盘写保护 第一步 df h 确定文件夹对应的磁盘 第二步 mount ro为只读 rw为可读可写 可以用mount命令看看ro的分区 如果发现有ro 就重新mount 如 umount dev sda1 mount dev sda1
  • 备战2022,Android中高级面试必知必会

    在过去不久的金九银十 有些小伙伴已经找到了理想的工作 当然也有很多小伙伴因为准备不充分 面试挂了 临近年关 最近有很多网友都在求大厂面试题 正好我在9月份和10月份整理和收集了 Android 中高级面试真题解析 于是就发上来分享给大家 这
  • 如何使用matlab读取excel中的表格数据

    如何使用matlab读取excel中的表格数据 设备系统 win10 操作软件 matlab2020b 1 首先打开matlab软件 点击 新建 脚本 2 在脚本中输入代码 A xlsread C Users Administrator D
  • [附源码]java毕业设计订单管理系统

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 SSM mybatis Ma
  • 【操作系统】虚拟内存的最大容量和实际容量的区别(以一道例题开头)

    实际内存为什么是2GB 512MB 因为实际容量是取CPU寻址 2 32B 与内存与外存之和 2GB 512MB 的最小值 就是相当于 数学里面两个值取最小值一样
  • gdbserver配置、远程调试以及ssh配置

    引言 GDB调试主要有两种方法 1 直接在目标板上通过gdb调试程序 2 在目标板上通过gdbserver运行程序 在宿主机上通过gdb调试程序 本篇文章主要来说明一下gdbserver远程调试的方法 主要以VScode举例说明 步骤 一