linux板子vscode gdb 远程调试

板子:hi3556v200

交叉编译工具:arm-himix200-linux

主机:win10+虚拟机的ubuntu16.4

gdb:gdb-8.2.tar.gz

1.在ubuntu交叉编译gdb(Remote 'g' packet reply is too long解决)

建议修改gdb8.2/gdb目录下面的remote.c解决Remote 'g' packet reply is too long

修改:

  /* Further sanity checks, with knowledge of the architecture.  */
  if (buf_len > 2 * rsa->sizeof_g_packet)
    error (_("Remote 'g' packet reply is too long (expected %ld bytes, got %d "
         "bytes): %s"), rsa->sizeof_g_packet, buf_len / 2, rs->buf);

修改为:

  /* Further sanity checks, with knowledge of the architecture.  */
  if (buf_len > 2 * rsa->sizeof_g_packet) {
   rsa->sizeof_g_packet = buf_len ;
   for (i = 0; i < gdbarch_num_regs (gdbarch); i++) {
       if (rsa->regs[i].pnum == -1)
          continue;
       if (rsa->regs[i].offset >= rsa->sizeof_g_packet)
          rsa->regs[i].in_g_packet = 0;
       else
          rsa->regs[i].in_g_packet = 1;
   }
}

在gdb8.2的目录执行

./configure --target=arm-himix200-linux --prefix=$(pwd)/cbInstall

make

 make install

将在当前目录的cbInstall生成gdb工具,这个工具是ubuntu运行的

2. 在ubuntu交叉编译gdbserver

在gdb8.2/gdb/gdbserver的目录执行

./configure --target=arm-himix200-linux --prefix=$(pwd)/cbInstall

make

make install

将在当前目录的cbInstall生成gdbserver工具,这个工具需要拷贝到3556v200开发板

 3.使用步骤

例子程序testProgram编译的时候需要加入-g参数

在板子运行

./gdbserver port:1234 ./testProgram

在ubuntu运行

 ./arm-himix200-linux-gdb

然后输入

target remote 192.168.10.10:1234

contiune

结果:

 

4.vscode远程调试 

4.1ubuntu装ssh服务器

sudo apt update
sudo apt upgrade
sudo apt install openssh-server
sudo sytemctl enable ssh
sudo sytemctl start ssh
sudo sytemctl status ssh
sudo ufw allow ssh
sudo ufw enable
sudo ufw status

4.2 vscode装好ssh插件并链接ubuntu

然后配置

 

 

 输入ssh xxx(ubuntu名称)@xxxxxx(ip地址)

 

 远程调试最主要是配置vscode调试json文件 launch.json

下面是z

{

    // 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": [

   

     {

      "type": "cppdbg",

      "request": "launch",

      "name": "Debug for test",

      "skipFiles": [

       "<node_internals>/**"

      ],

      "args": [],

      "program": "${workspaceFolder}/diZDJXV1_000",

      "stopAtEntry": false,

      "cwd": "${workspaceFolder}",

      "externalConsole": true,

      "MIMode": "gdb",

      "setupCommands": [

       {

        "description": "Enable pretty-printing for gdb",

        "text": "-enable-pretty-printing",

        "ignoreFailures": true

       }

      ],

      "miDebuggerPath":"/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gdb1",

      "miDebuggerServerAddress": "192.168.10.10:1234"

     }

    ]

   }

 

{// 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": [{"type": "cppdbg",	"request": "launch","name": "Debug for test", "skipFiles": ["<node_internals>/**"],"args": [],"program": "${workspaceFolder}/diZDJXV1_000","stopAtEntry": false,"cwd": "${workspaceFolder}","externalConsole": true, "MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}], "miDebuggerPath":"/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gdb","miDebuggerServerAddress": "192.168.10.10:1234"}]
}
type:调试的类型
name:配置文件的名字
request:配置文件的请求类型,有 launch 和 attach 两种,具体看官方文档
program:可执行文件的路径和文件名称
args:主函数调用时传入的参数
stopAtEntry:设为true时程序将暂停在程序入口处
cwd:调试时的工作目录
externalConsole:调试时是否显示控制台窗口
MIMode:指定 VS Code 连接的调试器,必须为 gdb 或者 lldb
miDebuggerPath:调试器路径,这个需要修改为上面编译好的那个,我这里是替换了海思原来的gdb工具
miDebuggerServerAddress: 板子 ip

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/540569.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ConcurrentHashMap 为什么不能插入 null?

1、典型回答 简单来说&#xff0c;ConcurrentHashMap 不允许插入 null 值是JDK 源码规定的&#xff0c;如下源码所示(此源码基于JDK 1.8)&#xff1a; 从上述源码可以看出&#xff0c;在添加方法的第一句就加了判断&#xff1a;如果 key 值为 null 或者是 value 值为 null&…

电梯机房秀 系列二

上次小伍带大家看了部分机房的照片&#xff0c;并且简单介绍了一下电梯能量回馈装置&#xff0c;小伙伴们表示很新奇&#xff0c;没看够&#xff0c;今天小伍又来了&#xff0c;带大家看一下电梯能量回馈装置到底安装在电梯什么位置。跟着小伍去看看吧。Lets go&#xff01; 电…

解决提示无法使用内置管理员账户打开Microsoft Edge的方法

图片出自链接&#xff1a;解决提示无法使用内置管理员账户打开Microsoft Edge的方法

如何识别代理IP的真实地理位置

目录 一、代理IP的概述 二、识别代理IP真实地理位置的方法 IP数据库查询 反向DNS查询 网络延迟测量 三、案例分析与代码实现 四、总结与展望 随着网络技术的不断发展&#xff0c;代理IP的使用越来越广泛&#xff0c;但这也给网络安全和数据分析带来了挑战。代理IP可以隐…

我记不住的那些命令-xxdod

背景&#xff1a; 这里记录一下具体的xxd和od命令参数和使用方法&#xff0c;我想我肯定是记不住这些参数的。 零、文件 我们这里有一个示例文件README.txt&#xff0c;内容如下图所示&#xff1a; 一、xxd(查看、编辑二进制文件) 1. 十六进制显示(默认) 我们发现上面的显…

【WPF】Canvas的Path画线 颜色值偏差和面积不准确

图像中左上角2个红色线段 颜色值有偏差&#xff0c;且线段高度不准确&#xff08;我设置的是Red,1&#xff09;。 解决方案&#xff1a; 1、PathGeometry PathFigure LineSegment 2、Stretch设置Fill <Path Stretch"Fill" Stroke"Red"…

macOS - 获取硬件设备信息

文章目录 1、CPU获取方式 一&#xff1a; system_profiler获取方式二&#xff1a;sysctl&#xff0c; machdepmachdep 2、内存3、硬盘4、显卡5、声卡6、光驱7、系统序列号8、型号标识符9、UUID 等信息 10. 计算机名称 1、CPU 获取方式 一&#xff1a; system_profiler % syst…

LeetCode.2864. 最大二进制奇数

题目 2864. 最大二进制奇数 分析 这道题目其实我们只需要保证最后一位是1&#xff0c;其余的1都放在最前面&#xff0c;这样得到的就是最大二进制奇数。 所以&#xff0c;我们先统计给定的字符串有多少个 1&#xff0c;多少个 0&#xff0c;把其中一个 1 放在最后一位&…

谷歌的后量子密码学威胁模型

1. 引言 若现在不使用量子安全算法来加密数据&#xff0c;能够存储当前通信的攻击者最快十年内就能对其解密。这种先存储后解密的攻击是当前采用后量子密码学 (post-quantum cryptography&#xff0c;PQC) 背后的主要动机&#xff0c;但其他未来的量子计算威胁也需要一个深思熟…

【Python】新手入门学习:详细介绍迪米特原则(LoD)及其作用、代码示例

【Python】新手入门学习&#xff1a;详细介绍迪米特原则&#xff08;LoD&#xff09;及其作用、代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTor…

3.1_10 段页式管理方式

3.1_10 段页式管理方式 &#xff08;一&#xff09;分页、分段的优缺点分析 基于分页、分段的优缺点&#xff0c;人们想出了将分页、分段结合&#xff0c;就产生了段页式管理。段页式管理具备了分页、分段各自的优点。 &#xff08;二&#xff09;分段分页段页式管理 将进程按逻…

H5 红色文字抖动网址发布页/引导页源码

源码名称&#xff1a;红色文字抖动网址发布页/引导页 源码介绍&#xff1a;一款红色文字抖动网页源码&#xff0c;可用于引导页或网址发布页。 需求环境&#xff1a;H5 下载地址&#xff1a; https://www.changyouzuhao.cn/10470.html