海思GDB + GDB Server调试(适用于小内存设备)

2024-05-27 09:32

本文主要是介绍海思GDB + GDB Server调试(适用于小内存设备),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1.简介
  • 2.编译
    • 2.1 GDB源码下载
    • 2.2 GDB编译
    • 2.3 GDB Serve编译
  • 3.设备程序编译
  • 4.运行
    • 4.1 设备端
    • 4.2 PC

1.简介

在设备上调试程序的时候,经常使用GDB进行调试,很方便也很容易追踪到问题所在。但是有些设备内存较小,直接使用GDB经常因为内存不够导致GDB无法运行,因此采用GDB + GDB Server这种方式会消耗设备的内存较小,在一些较少内存的设备上,可以使用这种方式进行调试。

2.编译

2.1 GDB源码下载

地址:
http://www.gnu.org/software/gdb/download/
目前最新版本为8.3.1

2.2 GDB编译

解压源码,进入源码主目录,使用下面命令编译:

./configure --target=arm-hisiv500-linux --prefix=/home/gdb/gdb-8.3/__install -v
make
make install

其中:
arm-hisiv500-linux 为设备的交叉编译工具链
/home/gdb/gdb-8.3/__install 是程序安装路径,可以随意设置
编译成功后,会在__install/bin下生成arm-hisiv500-linux-gdb可执行程序

2.3 GDB Serve编译

在主目录,进入到gdb\gdbserver目录,使用下面命令进行编译:

./configure --target=arm-hisiv500-linux --host=arm-hisiv500-linux
make  CC=arm-hisiv500-linux-gcc 

编译成功后,会在gdb\gdbserver下生成可执行程序gdbserver

3.设备程序编译

编译设备程序时候,需要在编译命令上加上-ggdb选项,同时注意不要使用strip命令来strip编译好的设备端程序

4.运行

4.1 设备端

将编译好的gdbserver拷贝到设备上,执行如下命令:

./gdbserver 192.168.22.100:2345 hisi_demo

其中:
192.168.22.100 为PC的IP
2345 为端口号
hisi_demo 为编译的设备端程序

在PC端的程序运行之后,会在设备上有如下打印:

Remote debugging from host 192.168.22.100, port 46154

4.2 PC

在编译好的arm-hisiv500-linux-gdb目录,执行如下命令:

./arm-hisiv500-linux-gdb 
(gdb) target remote 192.168.22.101:2345
(gdb) c(小写c运行程序)

其中:
192.168.22.101 为设备的IP
2345 为端口号

随后可以使用其它GDB命令进行程序的调试。

这篇关于海思GDB + GDB Server调试(适用于小内存设备)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存