向openHarmony设备添加gdb调试工具

news2024/10/7 7:33:54
1. 下载gdb源码

国内从官网下载源码比较慢,可以从清华的镜像网站(清华大学开源软件镜像站 | Tsinghua Open Source Mirror)上下载。下载地址:

Index of /gnu/gdb/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

选择想要的版本即可。

2. 下载交叉编译工具
sudo apt install gcc-arm-linux-gnueabi
sudo apt install g++-arm-linux-gnueabi
sudo apt install gcc-aarch64-linux-gnu
sudo apt install g++-aarch64-linux-gnu
3. 搭建编译环境

将下载好的gdb-xxx.tar.gz上传到Linux编译环境上对应目录,进行解压

tar -zxvf gdb-xxx.tar.gz

解压后进入gdb目录,并创建build目录

cd gdb-xxx
mkdir build

然后在build目录下生成编译gdb的Makefile文件

32位:

cd build
CC="/usr/bin/arm-linux-gnueabi-gcc" CXX="/usr/bin/arm-linux-gnueabi-g++" ../configure LDFLAGS=-static --prefix=$HOME/glib^C2-2.6 -target=arm-linux-gnueabi --host=arm-linux-gnueabi

64位:

cd build
CC="/usr/bin/aarch64-linux-gnu-gcc" CXX="/usr/bin/aarch64-linux-gnu-g++" ../configure  --target=aarch64-linux-gnu --host=aarch64-linux-gnu

其中:

CC/CXX为gcc/g++交叉编译工具的路径,使用apt install安装后,默认在/usr/bin目录,可以使用which gcc/which g++命令查询具体路径。

执行完以上命令后,会在build目录下生成gdb的Makefile文件。然后执行make命令进行编译即可。编译好的二进制文件保存在build/gdb目录下。

4. 去除调试信息

去掉调试信息,可以大幅缩小二进制文件大小,否则可能因设备空间不足导致无法推送到设备上。

aarch64-linux-gnu-objcopy --strip-debug gdb/gdb

5. 推送gdb文件到目标设备

使用hdc连接设备,执行如下命令推送gdb到设备上:

hdc shell mount -o remount,rw /
hdc file send gdb /bin/
chmod +x /bin/gdb
hdc shell mount -o remount,rw /
6. 推送gdb依赖的so到目标设备

对于64位gdb,使用LDFLAGS=-static编译时会报错,目前暂未找到解决方案,需要将gdb运行时所需要的动态链接库拷贝到目标设备上,否则gdb执行时会因找不到动态链接库报错。这些库在/usr/aarch64-linux-gnu/lib下可以找到

hdc file send ld-linux-aarch64.so.1 /lib/
hdc file send libstdc++.so.6 /lib/
hdc file send libstdc++.so.6.0.30 /lib/
hdc file send libm.so /lib/
hdc file send libm.so.6 /lib/
hdc file send libgcc_s.so.1 /lib/
hdc file send libc.so /lib/
hdc file send libc.so.6 /lib/
hdc shell chmod +x /lib/*
7. 使用gdb调试应用

以上步骤执行成功后,就可以在openHarmony设备上使用gdb调试程序了。

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

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

相关文章

喜讯|华院计算认知智能引擎算法平台荣登BPAA大赛创新组TOP50

6月25日,备受瞩目的BPAA第四届全球应用算法模型典范大赛(以下简称“BPAA大赛”)正式揭晓了《第四届全球应用算法模型典范大赛创业组TOP50榜单》和《第四届全球应用算法模型典范大赛创新组TOP50榜单》。其中,华院计算技术&#xff…

Python课程设计:python制作俄罗斯方块小游戏

基于python的俄罗斯方块小游戏 目录 基于python的俄罗斯方块小游戏 1.概述 1.1 摘要 1.2 开发背景 1.3 开发环境 1.4 实现功能 2.代码描述 2.1 模块导入 2.2 初始化变量 2.3 播放音乐 2.4 创建方块类 2.5 绘制游戏地图 2.6 游戏初始化 2.7 绘制有边框矩形 2.8 …

go使用grpc编辑器 windows

先看最后效果: 当我执行 protoc --go_out. proto.proto 会生成proto.pb.go文件,主要存储的是封装好的结构体 执行 protoc --go-grpc_out. proto.proto 会生成对应的方法 那么现在提供解决方案: https://github.com/protocolbuffers…

kafka的架构

一、架构图 Broker:一台 kafka 服务器就是一个 broker。一个kakfa集群由多个 broker 组成。一个 broker 可以容纳多个 topic。 Producer:消息生产者,就是向 kafka broker 发消息的客户端 Consumer:消息消费者,向 kafk…

软考中级系统集成项目管理工程师备考笔记

目录 一,通用内容 (一)信息与信息化 1.1,信息 信息基本概念 信息的传输模型 信息的质量属性 1.2,信息系统 信息系统的基本概念 信息系统定义 信息系统集成 1.3,信息化 信息化层次 信息化的核心…

Prometheus在金融行业信息系统运维管理中的应用:实践与案例分析

Prometheus在金融行业信息系统运维管理中的应用:实践与案例分析 Prometheus是一款开源的监控系统和时序数据库,被广泛应用于各种行业的运维管理中,特别是在金融行业。它具有强大的数据采集和分析能力,能够实时监控系统的性能和状…

华为eNSP模拟器安装详细步骤

安装准备 安装eNSP需要先安装三个依赖软件才能运行,分别是VirtualBox、WinPcap、Wireshark 下载地址如下 eNSP:http://cloud.rsecc.cn/softlink/eNSP%20V100R003C00SPC100%20Setup.exe VirtualBox:http://cloud.rsecc.cn/softlink/Virtua…

Steam页面打不开?steam显示当前游戏不可用是怎么回事

Steam是全球最大的游戏综合发行平台,每年为无数玩家呈现了多款精彩游戏,不过由于网络问题或其他异常因素影响,有很多玩家会在访问steam或steam的游戏商品页时,遇到Steam提示当前游戏在您平台不可用、打不开游戏页面的情况&#xf…

自动化测试报告pytest-html样式美化

最近我将 pytest-html 样式优化了 一版 先看优化前: 优化后: 优化内容包括: 删除部分多余字段新增echart图表部分字体大小、行间距、颜色做了美化调整运行环境信息移至报告最后部分字段做了汉化处理(没全部翻译是因为&#xf…

七天速通javaSE:第七天 面向对象:封装继承与多态

文章目录 前言一、封装1. 属性私有2. get,set3. 修饰符的可访问性4. 特点总结 二、继承1. 子承父业:extends2. 区分父子:super2.1 属性2.2 方法重写 三、多态(不同类继承同一个类) 前言 一、封装 概念:封装…

等保测评应该选择什么样的SSL证书

选择适合等保测评的SSL证书,需考虑证书的加密强度、认证机制以及是否满足国家相关的密码技术要求 1、证书类型:应选择符合国家或行业标准的SSL证书,这些证书通常采用RSA、DSA或ECC等国际认可的加密算法。同时,考虑到国内特定的合规…

IP地址修改方法攻略:类型、步骤与注意事项

在数字化时代,IP地址作为网络设备的唯一标识符,其重要性不言而喻。然而,在某些特定场景下,如保护个人隐私、绕过网络限制或实现特定网络访问需求,修改IP地址就显得尤为关键。本文将详细介绍IP地址修改方法有哪几种类型…

13. Java 生产者与消费者案例

1. 前言 本节内容是通过之前学习的 synchronized 关键字,实现多线程并发编程中最经典的生产者与消费者模式,这是本节课程的核心内容,所有的知识点都是围绕这一经典模型展开的。本节有如下知识点: 生产者与消费者模型介绍&#x…

昇思25天学习打卡营第13天 | SSD目标检测

模型简介 SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测试集上,SSD对于输入尺寸300x300的网络,达到74.3%mAP(mean Average Precision)以及59FPS&#x…

周界入侵自动监测摄像机

当今,随着科技的快速发展,周界入侵自动监测摄像机作为安全监控领域的重要创新,正逐渐成为各类场所安全防范的核心设备。这种摄像机以其先进的监测和预警功能,有效提升了安全管理的效率和实时响应能力,被广泛应用于各类…

电子看板,帮助工厂实现数字化管理

在数字化浪潮的推动下,制造业正经历着深刻的变革,数字工厂成为了行业发展的新趋势。而生产管理看板作为一种重要的管理工具,在提升数字工厂管理效率方面发挥着关键作用。 生产管理看板通过实时数据的展示,为数字工厂提供了清晰的全…

【微信小程序开发实战项目】——如何制作一个属于自己的花店微信小程序(1)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

Windows10录屏,教你3个方法,简单快速录屏

“我的电脑系统是Windows10的系统,今晚要进行线上开会,但我实在有事没办法参加会议,想把会议的内容录制下来方便我后续观看。但却找不到电脑录屏功能在哪里打开?求助一下,谁能帮帮我?” 在数字化时代&…

软考 有向图 数据库之关系模式范式

假设有一个关系 R(A, B, C, D),并且已知以下函数依赖: A → B B → C BC → D 求候选键? 求候选码? 候选键/候选码 是同一个概念. 数据库范式也分为1NF,2NF,3NF,BCNF,4NF,5NF。 https://cloud.tencent.com/developer/article/2055118 2NF在1NF的基础…

如何定制化 ListView 界面

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。 😊 座右铭:不…