OpenHarmony中的LLDB高性能调试器

概述

LLDB(Low Lever Debugger)是新一代高性能调试器。详细说明参考 LLDB官方文档 。

当前OpenHarmony中的LLDB工具是在 llvm15.0.4 基础上适配演进出来的工具,是HUAWEI DevEco Studio工具中默认的调试器,支持调试C和C++应用。

工具获取

可通过OpenHarmony的SDK获取,lldb工具在SDK中的路径为\ohos-sdk[system]\native\llvm,其中system可选windows/linux/darwin。

以Windows平台为例,解压SDK后,lldb.exe的存放路径为\ohos-sdk\windows\native\llvm\bin。

功能列表

此处列举LLDB调试器支持的部分功能,更多功能与相关命令可见:LLDB工具使用指导 。

  • 记录日志
  • 断点管理
  • 观察点管理
  • 表达式处理
  • 查看变量
  • 进程/线程管理
  • 汇编处理
  • 源码信息获取
  • 信号处理
  • 进程启动
  • attach进程

应用场景

  • 本地调试
    • Linux x86_64本地调试。
      LLDB支持在Linux x86_64环境上调试C和C++应用。
    • Mac桌面本地调试。
      LLDB支持在Mac桌面(包括Mac x86_64和M1系统)调试C和C++应用。
  • 远程调试
    • 基于HUAWEI DevEco Studio的远程调试。
      LLDB支持基于HUAWEI DevEco Studio在Windows和Mac桌面连接OpenHarmony设备或模拟器远程调试Native C++应用,即使用HUAWEI DevEco Studio的Debug调试功能。
    • 桌面连接OpenHarmony设备远程调试。

LLDB支持在Windows、Mac桌面和Linux x86_64环境直连OpenHarmony设备远程调试C和C++应用。

使用指导-本地调试

说明: Linux x86_64或Mac本地调试步骤一致。

使用步骤

  • 使用LLDB工具启动应用并进行调试。

    此处以在Linux x86_64环境调试一个使用clang编译器生成的带有调试信息的可执行文件a.out为例。

  1. 获取到与LLDB同一版本的clang编译器生成的带有调试信息的可执行文件a.out。

  2. 运行LLDB工具,并指定要调试的文件为a.out。

./lldb a.out
  1. 在代码中main函数处设置断点。
(lldb) b main
  1. 运行应用,使其停在断点处。
(lldb) run
5.  继续运行应用。
(lldb) continue
  1. 列出所有断点。
(lldb) breakpoint list
  1. 显示当前帧的参数和局部变量。
(lldb) frame variable
  1. 按需执行调试命令进行后续调试操作。

  2. 退出调试。

(lldb) quit
  • 使用LLDB工具调试已经启动的应用。

此处以在Mac环境调试一个使用clang编译器生成的带有调试信息和用户输入的可执行文件a.out为例。

  1. 在命令行窗口1启动应用。(窗口会返回一条信息“Please input a number of type int”)
./a.out
  1. 在命令行窗口2运行LLDB工具。
./lldb
  1. attach应用。
(lldb) process attach --name a.out
  1. 在hello.cpp的第10行设置断点
(lldb) breakpoint set --file hello.cpp --line 10
  1. 在命令行窗口1,输入一个int类型的数。
88
  1. 在命令行窗口2继续运行应用,使应用停在断点处。
(lldb) continue
  1. 按需执行调试命令进行后续调试操作。

  2. detach应用。

(lldb) detach
  1. 退出调试。
(lldb) quit

说明: 步骤3和4可以调换顺序执行。

使用指导-远程调试

说明:

  • 远程调试时需要lldb-server和lldb配合使用。
  • Windows,Linux x86_64和Mac远程调试步骤一致。

使用步骤

此处以在Windows平台连接arm架构OpenHarmony设备(如:RK3568开发板)进行远程调试为例。

说明: 其中/data/local/tmp为设备上指定的目录。
8080为监听端口,可自定义。
请确保设备上的lldb-server和a.out有可执行权限。

  1. 打开命令行窗口1,将lldb-server和可执行文件a.out推送到设备。(a.out是使用clang编译器编译hello.cpp生成的。)
hdc file send lldb-server /data/local/tmp
hdc file send a.out /data/local/tmp
  1. 运行lldb-server。
hdc shell ./data/local/tmp/lldb-server p --server --listen "*:8080"
  1. 打开命令行窗口2,运行二进制文件lldb。
./lldb
  1. 在LLDB命令行窗口进行远端选择与连接。
(lldb) platform select remote-ohos
(lldb) platform connect connect://localhost:8080 
  1. 指定要调试的设备上的二进制文件a.out。
(lldb) target create /data/local/tmp/a.out
  1. 在代码中main函数处设置断点。
(lldb) b main
  1. 启动应用。
(lldb) run
  1. 查看当前目标进程的源码。
(lldb) source list
  1. 按需执行调试命令进行后续调试操作。

  2. 退出调试。

(lldb) quit

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

镜视界 | DevSecOps CI/CD 管道中数字供应链安全的集成策略

目录 前言 数字供应链(DSC)的定义 数字供应链安全的重点内容和风险因素 CI/CD管道的安全目标和可信实体 将数字供应链安全集成到CI/CD管道中 结语 本文字数:7715,阅读时长:19分钟 1.前言 在敏捷开发的模式下&…

SnapGene 5 for Mac 分子生物学软件

SnapGene 5 for Mac是一款专为Mac操作系统设计的分子生物学软件,以其强大的功能和用户友好的界面,为科研人员提供了高效、便捷的基因克隆和分子实验设计体验。 软件下载:SnapGene 5 for Mac v5.3.1中文激活版 这款软件支持DNA构建和克隆设计&…

StarRocks实战——多点大数据数仓构建

目录 前言 一、背景介绍 二、原有架构的痛点 2.1 技术成本 2.2 开发成本 2.2.1 离线 T1 更新的分析场景 2.2.2 实时更新分析场景 2.2.3 固定维度分析场景 2.2.4 运维成本 三、选择StarRocks的原因 3.1 引擎收敛 3.2 “大宽表”模型替换 3.3 简化Lambda架构 3.4 模…

目标检测的相关模型图:YOLO系列和RCNN系列

目标检测的相关模型图:YOLO系列和RCNN系列 前言YOLO系列的图展示YOLOpassthroughYOLO2YOLO3YOLO4YOLO5 RCNN系列的图展示有关目标检测发展的 前言 最近好像大家也都在写毕业论文,前段时间跟朋友聊天,突然想起自己之前写画了一些关于YOLO、Fa…

excel中批量插入分页符

excel中批量插入分页符,实现按班级打印学生名单。 1、把学生按照学号、班级排序好。 2、选择班级一列,点击数据-分类汇总。汇总方式选择计数,最后三个全部勾选。汇总结果一定要显示在数据的下发,如果显示在上方,后期…

实战|使用 Node.js 和 htmx 构建全栈应用程序

在本教程中,我将演示如何使用 Node 作为后端和 htmx 作为前端来构建功能齐全的 CRUD 应用程序。这将演示 htmx 如何集成到全栈应用程序中,使您能够评估其有效性并确定它是否是您未来项目的不错选择。 htmx 是一个现代 JavaScript 库,旨在通过…

系统架构图怎么画

画架构图是架构师的一门必修功课。 对于架构图是什么这个问题,我们可以按以下等式进行概括: 架构图 架构的表达 架构在不同抽象角度和不同抽象层次的表达,这是一个自然而然的过程。 不是先有图再有业务流程、系统设计和领域模型等&#…

项目四-图书管理系统

1.创建项目 流程与之前的项目一致,不再进行赘述。 2.需求定义 需求: 1. 登录: ⽤⼾输⼊账号,密码完成登录功能 2. 列表展⽰: 展⽰图书 3.前端界面测试 无法启动!!!--->记得加入mysql相关操作记得在yml进行配置 配置后启动…

基于ZHW3548的红外额温枪解决方案

红外额温枪,非接触式测量最典型的方法是红外测温。自红外辐射原理被发现以来,红外技术被广泛应用在温度测量中。红外测温仪具有测温范围广,响应速度快,灵敏度高等特点。红外耳温枪、红外额温计和红外筛检仪都属于非接触式体温计。…

admin端

一、创建项目 1.1 技术栈 1.2 vite 项目初始化 npm init vitelatest vue3-element-admin --template vue-ts 1.3 src 路径别名配置 Vite 配置 配置 vite.config.ts // https://vitejs.dev/config/import { UserConfig, ConfigEnv, loadEnv, defineConfig } from vite im…

C语言 C6031:返回值被忽略:“scanf“ 问题解决

我们在代码中 直接使用 scanf 就会出现这个错误 在最上面 加上 #define _CRT_SECURE_NO_WARNINGS//禁用安全函数警告 #pragma warning(disable:6031)//禁用 6031 的安全警告即可正常运行

TitanIDE与传统 IDE 比较

与传统IDE的比较 TitanIDE 和传统 IDE 属于不同时代的产物,在手工作坊时代,一切都是那么的自然,开发者习惯 Windows 或 MacOS 原生 IDE。不过,随着时代的变迁,软件行业已经步入云原生时代,TitanIDE 是顺应…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果 一、简单介绍 二、简单闪烁效果实现原理 三、简单闪烁效果案例实现简单步骤 四、注意事项 一、简单…

JimuReport积木报表 v1.7.4 公测版本发布,免费的JAVA报表工具

项目介绍 一款免费的数据可视化报表,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报…

多源统一视频融合可视指挥调度平台VMS/smarteye系统概述

系统功能 1. 集成了视频监控典型的常用功能,包括录像(本地录像、云端录像(录像计划、下载计划-无线导出)、远程检索回放)、实时预览(PTZ云台操控、轮播、多屏操控等)、地图-轨迹回放、语音对讲…

iptables添加端口映射,k8s主机查询不到端口但能访问。

研究原因:k8s内一台主机使用命令查询没有80端口。但通过浏览器访问又能访问到服务。 查询了资料是使用了hostport方式暴露pod端口。cni调用iptables增加了DNAT规则。访问时流量先经过iptables直接被NAT到具体服务去了。 链接: K8s罪魁祸首之"HostPort劫持了我…

Docker 夺命连环 15 问

目录 什么是Docker? Docker的应用场景有哪些? Docker的优点有哪些? Docker与虚拟机的区别是什么? Docker的三大核心是什么? 如何快速安装Docker? 如何修改Docker的存储位置? Docker镜像常…

使用certbot为网站启用https

1. 安装certbot客户端 cd /usr/local/bin wget https://dl.eff.org/certbot-auto chmod ax ./certbot-auto 2. 创建目录和配置nginx用于验证域名 mkdir -p /data/www/letsencryptserver {listen 80;server_name ~^(?<subdomain>.).ninvfeng.com;location /.well-known…

C/C++ ③ —— C++11新特性

1. 类型推导 1.1 auto auto可以让编译器在编译期就推导出变量的类型 auto的使⽤必须⻢上初始化&#xff0c;否则⽆法推导出类型auto在⼀⾏定义多个变量时&#xff0c;各个变量的推导不能产⽣⼆义性&#xff0c;否则编译失败auto不能⽤作函数参数在类中auto不能⽤作⾮静态成员…

[数据结构]插入和希尔排序

一、插入排序 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴&#xff0c;但它的原理应该是最容易理解的了&#xff0c;因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法&#xff0c;它的工作原理是通过构建有序序列&#xff0c;对于未排…