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
下面是详细配置
{// 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}/testProgram","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
相关文章:
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解决…...
nginx代理服务器配置
nginx代理服务器配置 需要配置环境需求 1、一台1.1.1.1服务器,一台2.2.2.2服务器 前端包路径在1.1.1.1 /etc/dist 下 后端服务在2.2.2.2 上 暴露端口为9999 2、需求 现在需要访问 1.1.1.1:80访问到2.2.2.2 上面的9999后端服务 3、配置nginx ①:在…...
基于Matlab的视频人面检测识别,Matalb实现
博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…...
VSCode创建用户代码片段-案例demo
示例 - 在线生成代码片段 Vue3代码片段 {"vue3": {scope": "javascript,typescript,html,vue","prefix": "vue3","body": ["<template>","$1","</template>",""…...
河南大学-数字图像处理-图像变换
计算机与信息工程学院实验报告 序号:20 姓名:__杨馥瑞___ 学号:_2212080042_ 专业:__数据科学与大数据技术 年级:___2022级_____ 课程:数字图像处理 主讲教师:张延锋 辅导教师&#x…...
华为OD七日集训第3期 - 按算法分类,由易到难,循序渐进,玩转OD
目录 一、适合人群二、本期训练时间三、如何参加四、七日集训第 3 期五、精心挑选21道高频100分经典题目,作为入门。第1天、逻辑分析第2天、字符串处理第3天、矩阵第4天、深度优先搜索dfs算法第5天、回溯法第6天、二分查找第7天、图、正则表达式 大家好,…...
Android中的进程间通讯
一、简介 进程间通讯(InterProcess Communication) 指在不同进程之间传播或交换信息,Android是基于Linux 系统的,在Linux 中进程间是不能直接通讯的,IPC就是为了解决这一问题 每个操作系统都有相应的IPC机制&#x…...
day03vue学习
day03 一、今日目标 1.生命周期 生命周期介绍生命周期的四个阶段生命周期钩子声明周期案例 2.综合案例-小黑记账清单 列表渲染添加/删除饼图渲染 3.工程化开发入门 工程化开发和脚手架项目运行流程组件化组件注册 4.综合案例-小兔仙首页 拆分模块-局部注册结构样式完善…...
32. 最长有效括号
给你一个只包含 ( 和 ) 的字符串,找出最长有效(格式正确且连续)括号 子串 的长度。 示例 1: 输入:s "(()" 输出:2 解释:最长有效括号子串是 "()"示例 2: 输…...
如何在 docker 容器内部运行 docker命令
场景: 有些场景在容器内部需要调用 docker 命令。为此,本文梳理2种可以在容器内部执行docker命令的方法。 方法1:基于 docker.sock /var/run/docker.sock是默认的Unix socket(套接字),socket是同一机器中进程间通讯的一种方式。…...
Poly Kernel Inception Network在遥感检测中的应用
摘要 https://export.arxiv.org/pdf/2403.06258 遥感图像(RSI)中的目标检测经常面临一些日益严重的挑战,包括目标尺度的巨大变化和多样的上下文环境。先前的方法试图通过扩大骨干网络的空间感受野来解决这些挑战,要么通过大核卷积…...
tiktok 与 赵长鹏 遭遇了什么
对于美丽国来说,比特币是国家资产,赵长鹏动了国家资产的奶酪,当然要被消灭;新闻媒体是国家资产,TIKTOK作为新兴媒体也动了国家资产的奶酪,当然也在消灭之列;高端芯片、波音飞机也是国家资产&…...
Lua中文语言编程源码-第七节,更改lstrlib.c 标准字符串操作与模式匹配库函数, 使Lua加载中文库关键词(标准字符串操作与模式匹配库相关)
源码已经更新在CSDN的码库里: git clone https://gitcode.com/funsion/CLua.git在src文件夹下的lstrlib.c 标准字符串操作与模式匹配库函数,表明这个C源文件实现了Lua的标准字符串操作与模式匹配库,即提供了与字符串操作相关的API和功能实现…...
EtherCAT开源主站 IGH 介绍及主站伺服控制过程
目录 前言 IGH EtherCAT主站介绍 主要特点和功能 使用场景 SOEM 主站介绍 SOEM 的特点和功能 SOEM 的使用场景 IGH 主站 和 SOEM对比 1. 功能和复杂性 2. 资源消耗和移植性 3. 使用场景 EtherCAT 通信原理 EtherCAT主站控制伺服过程 位置规划模式 原点复归模式…...
自然语言:python实现自然语言处理中计算文件中的英语字母的熵
下面是一个示例代码,实现了计算文件中英语字母的熵的功能。 import mathdef calculate_entropy(text):# 统计字母的出现次数letter_count {}total_count 0for char in text:if char.isalpha():char char.lower()letter_count[char] letter_count.get(char, 0) …...
分类预测 | Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别
分类预测 | Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别 目录 分类预测 | Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别。 2.自…...
基于SpringBoot的后勤管理系统【附源码】
后勤管理系统开发说明 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myecli…...
智能仓储系统|基于JSP技术+ Mysql+Java+ Tomcat的智能仓储系统设计与实现(可运行源码+数据库+设计文档)
推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…...
Layui实现删除及修改后停留在当前页
1、功能概述? 我们在使用layui框架的table显示数据的时候,会经常的使用分页技术,这个我们期望能够期望修改数据能停留在当前页,或者删除数据的时候也能够停留在当前页,这样的用户体验会更好一些,但往往事与…...
小型研发型企业,如何筛选合适的内外网数据交换方案?
研发型企业是社会经济发展的重要组成,研发型企业是一种以研发创新为主要驱动力的企业。这些企业主要注重技术创新和产品研发,致力于将新的科技成果转化为市场竞争力。它们通常拥有强大的研发团队和研发设施,投入大量资源用于技术研究和产品开…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
