海思 gdb+gdbserver调试·基础篇

2023-10-19 20:10

本文主要是介绍海思 gdb+gdbserver调试·基础篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

随着程序越来越复杂,单靠输出信息调试程序已然是不合适的,所以必须考虑使用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系统下运行
#--with-python指定python路径
./configure --with-python=/usr/bin/python3 --prefix="$PWD/install" --target=aarch64-himix100-linux --program-prefix=hisi-
make -j16
make install
  • 如果出现makeinfo未找到命令,则安装texinfo即可。
  • 如果出现no usable python found at python3.6,则安装sudo apt-get install python3.6-dev即可
    在这里插入图片描述
  • 在路径/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之类的指令调试了。

这篇关于海思 gdb+gdbserver调试·基础篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/242110

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin