海思3559AV100 gdb+gdbserver调试·基础篇

news2025/7/20 21:03:38

问题描述

随着程序越来越复杂,单靠输出信息调试程序已然是不合适的,所以必须考虑使用gdb调试,由于板子上比较难加载代码,所以最合适的办法应该是gdb+gdbserver远程调试,这样我们可以清楚地看到程序的运行信息。gdb官方文档,可下载最新的pdf。

how

030sdk解压之后,在osdrv/tools/board/gdb/路径下有两个压缩包,gdb-7.9.1.tar.gzncurses-6.0.tar.gz,实测gdb-8.3.1.tar.gz可用,下载链接。

  • 解压
    在这里插入图片描述

带有调试信息的程序

  • 修改CMakeLists.txt的命令行参数配置,生成包含调试信息的文件:
cmake -B ./build -S . -DCMAKE_C_COMPILER=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc -DCMAKE_BUILD_TYPE:STRING="Debug"

cmake --build ./build

生成gdb

#由于gdb在host上跑,所以不配置host,默认当前ubuntu系统下运行
./configure --prefix="$PWD/install" --target=aarch64-himix100-linux --program-prefix=hisi-
make -j16
make install

如果出现makeinfo未找到命令,则安装texinfo即可。
在这里插入图片描述

  • 在路径/home/flatfish/hisi/Resources/Hi3559AV100_SDK_V2.0.3.0/osdrv/tools/board/gdb/gdb-8.3.1/install/bin下生成可以在host上跑的gdb
    在这里插入图片描述
    在这里插入图片描述
    可以将hisi-gdb拷贝到/usr/local/bin/
cp hisi-gdb /usr/local/gdb

在这里插入图片描述
这样在其他位置也能调用hisi-gdb调试程序了。

生成gdbserver

在路径/home/flatfish/hisi/Resources/Hi3559AV100_SDK_V2.0.3.0/osdrv/tools/board/gdb/gdb-8.3.1/gdb/gdbserver下,执行类似刚才的配置,区别在于,gdbserver是跑在板端的,所以需要设定host,具体配置如下:

./configure --prefix="$PWD/install" --target=aarch64-himix100-linux --host=aarch64-himix100-linux --program-prefix=hisi-
make -j16
make install
  • 将需要调试的程序拷贝到板端

You need a copy of the program you want to debug,
including any libraries it requires. gdbserver does not need your program’s symbol table,
so you can strip the program if necessary to save space. gdb on the host system does all
the symbol handling.
在这里插入图片描述

  • hisi-gdbserver拷贝到板子的/usr/local/bin

调试

  • 在板端启动程序
#host为本地ip,6666为端口号,不冲突即可,test为程序,foo.txt为参数
gdbserver host:6666 test foo.txt
  • 本地gdb加载
hisi-gdb test
#remoteip代表板端ip,比如192.168.125.12
(gdb) target remote remoteip:6666

在这里插入图片描述
接下来本地就可以使用layout nextcontinue之类的指令调试了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第三章 组合逻辑电路

思维导图 笔记 组合逻辑电路 电路在任意时刻的输出状态仅由该时刻的输入信号决定,与电路在此信号输入之前的状态无关。 组合逻辑电路的分析 分析步骤 ①根据逻辑电路图,写出输出逻辑函数的表达式 ②根据逻辑表达式,列出真值表 ③由真值表或…

前端动画的另一种方式 json动画

前言 一谈到前端动画,最先想到的就是css3,当然这是其中一种方式,甚至有许多动画库,aniamte.css就是其中的一种。 我之前也谈到过三种做前端动画的方式 https://blog.csdn.net/glorydx/article/details/116102127 但现在&#x…

linux笔记(2):vscode插件remote WSL远程使用交叉编译工具链(全志D1-H)

文章目录1.前期准备1.1 Windows有对WSL文件读写的权限1.2 WSL的C语言编译环境已经搭建完毕2.在windows的vscode安装remoteWSL插件3.从ubuntu启动windows端的vscode4.使用vscode编译ubuntu端的c文件4.1 在《tasks.json》指定可视化make命令4.2编写Makefile文件4.3 开始编译4.3.1…

27服务-安全访问状态转换

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文将介绍安全访问状态图——作为UDS27服务的规范性附件。 可参考前两篇文章: 27服务-SecurityAccess UDS - 深论Security Access Service 27服务的初衷就是防止无权限人员进行非法数据操作&#xff…

Day801.内存问题排查方案 -Java 性能调优实战

内存问题排查方案 Hi,我是阿昌,今天学习记录的是关于内存问题排查方案。 碰到内存持续上升的情况,其实很难从业务日志中查看到具体的问题,那么面对多个进程以及大量业务线程,该如何精准地找到背后的原因呢&#xff1…

STM8S903K3基于ST Visual Develop开发定时器1中断示例

STM8S903K3基于ST Visual Develop开发定时器1中断示例 📌相关篇《STM8S903K3T6C基于IAR开发GPIO点灯示例》 🎉在基于STVP环境下和IAR环境下,如果都使用寄存器操作,那么差异不大,主要在中断函数的书写上有差异。 &#…

QSystemTrayIcon——实现系统托盘

QSystemTrayIcon类 QSystemTrayIcon QSystemTrayIcon是qt中专门用于处理系统托盘的类 头文件#include qmakeQT widgetsSinceQt 4.2InheritsQObject QSystemTrayIcon 支持Windows、macos和部分Linux桌面环境,可以通过 QSystemTrayIcon::isSystemTrayAvailable()方…

0基础学习——了解操作符的那些事(一)

小叮当的任意门操作符分类1. 算数操作符2. 移位操作符二进制(小插曲)左移动操作符右移操作符3. 位操作符& 按位与 &按位或 |按位异或 ^赋值操作符复合赋值符单目操作符操作符分类 在这里我们有:算数操作符 移位操作符 等 今天我们就先…

uni-App获取地图address与高德地图API配合

现在使用获取地图,不需要再去安装sdk,只需要和我一样执行下方代码可以解决问题(这里会从先获取经纬度,再到经纬度转成具体的地址,最后补充定位当前位置),并且当中会提及到很多,自己开…

深度学习模型的参数、计算量和推理速度统计

在没有过拟合的情况下,相同模型结构下,一般模型的参数量和计算量与最终的性能成正比,在比较不同模型性能时,最好能保持模型参数量和计算量在相同水平下,因此相应参数的统计很重要。这里只进行理论计算,最终…

MySQL的下载与安装

1. 下载地址 官网:https://www.mysql.com 2. 打开官网,点击DOWNLOADS 然后,点击 MySQL Community(GPL) Downloads 3. 点击 MySQL Community Server 这里在Windows 系统下推荐下载 MSI安装程序 ; 点击 My Go to Download Page…

中国医药院外流通市场分析

医药流通行业概览 医药流程市场主要分为院内、院外。 与院内市场终端相比,院外市场终端(特别是基层医疗层级终端)数量更多、规模更 小以及分布分散。此外,院外市场终端的服务区域半径有限,仅服务于一定地理区域内的 终端客户。因此&#xff…

【面试题】 ES6 类聊 JavaScript 设计模式之行为型模式(二)

本文是《ES6 类聊 JavaScript 设计模式》的第四篇,介绍第三种类型的设计模式行为设计模式,其特别关注对象之间的通信。 在软件工程中, 行为型模式为设计模式的一种类型,用来识别对象之间的常用交流模式并加以实现。如此&#xff0…

【Linux】进程控制

目录🌈前言🌸1、进程创建🍡1.1、概念🍢1.2、fork()之后执行顺序🍧1.3、fork()返回值🍨1.4、写时拷贝🍩1.5、fork创建失败问题🍁2、进程终止🍲2.1、概念🍱2.2、…

【附源码】Python计算机毕业设计数据学院工作量管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

力扣刷题day48|583两个字符串的删除操作、72编辑距离

文章目录583. 两个字符串的删除操作动态规划思路一动态规划思路二动态规划五部曲72. 编辑距离思路动态规划五部曲583. 两个字符串的删除操作 力扣题目链接 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符…

K_A05_001 基于 STM32等单片机驱动8X8点阵模块(MAX7219)显示0-9

目录 一、资源说明 二、基本参数 1、参数 2、引脚说明 三、通信协议说明 工作时序 对应程序: 四、部分代码说明 1、接线说明 1.1、STC89C52RC8X8点阵模块(MAX7219) 1.2、STM32F103C8T68X8点阵模块(MAX7219) 2、亮度调节 五、基…

Python中内置数据库!SQLite使用指南!

💡 作者:韩信子ShowMeAI 📘 Python3◉技能提升系列:https://www.showmeai.tech/tutorials/56 📘 本文地址:https://www.showmeai.tech/article-detail/390 📢 声明:版权所有&#xf…

Docker数据卷

Docker数据卷、Docker安全Docker数据卷Docker数据卷管理bind mountdocker数据卷两种方式不同和相同卷插件简介convoy卷插件实践Docker数据卷 主要解决存储问题、容器数据滞留 Docker数据卷管理 bind mount “-v”宿主机路径容器内nginx发布目录 新建一个首页 现在容器内目录…

猿创征文|工具百宝箱-编辑器-笔记工具-日常小工具-原型设计工具

这篇文主要介绍了开发者工具之外的一些日常小工具,我用这些小工具主要完成什么工作。分享给大家 官方活动入口:「猿创征文 」第四季 | 2022 年我的开发者工具 猿创征文|工具百宝箱-代码编辑器-版本控制工具-终端神器-项目与事务跟踪工具-SFTP…