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.mzph.cn/news/777743.shtml

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

相关文章

【直播课】2024年PostgreSQL CM认证实战培训课程于4月27日开课!

课程介绍 了解关注开源技术,学习PG以点带面 Linux/Andriod(操作系统)、Apache/Tomcat(应用服务器)、OpenStack/KVM(虚拟化)、Docker/K8S(容器化)、Hadoop(大…

IoTeX(IOTX) 推出首个DEPIN数据平台,蓝筹项目合作进入新时代。

首先来了解一下什么是IoTeX(IOTX) 2024年1月25日,作为由IoTeX驱动的首个DEPIN类别优先数据平台,与蓝筹DePIN项目Helium、Akash、Theta、DIMO、Pocket、Drife、WiFi Map和Streamr合作推出。这一官方发布标志着DePIN(去中心化物理基础设施网络&…

西门子 S7-200 SMART 系列十三:实例详解用s7-200 smart 向导配置PID回路参数设定

原文链接:西门子 S7-200 SMART 系列十三:实例详解用s7-200 smart 向导配置PID回路&参数设定 在往期文章中介绍了s7-200 smart的通讯应用,Modbus RTU,S7通信,Profinet通信,TCP通信等,基本包含…

代码学习记录29----贪心最后一天

随想录日记part29 t i m e : time: time: 2024.03.28 主要内容:今天是学习贪心算法最后一天,接下来是针对题目的讲解:1.单调递增的数字;2.监控二叉树; 3. 总结 738.单调递增的数字 968.监控二叉树 总结 To…

通知中心架构:打造高效沟通平台,提升信息传递效率

随着信息技术的快速发展,通知中心架构作为一种关键的沟通工具,正逐渐成为各类应用和系统中必不可少的组成部分。本文将深入探讨通知中心架构的意义、设计原则以及在实际场景中的应用。 ### 什么是通知中心架构? 通知中心架构是指通过集中管…

Git_常用命令+代码冲突解决方案

文章目录 基本命令的使用查看git的当前版本初始化配置设置用户名及邮箱设置仓库的认证方式查看当前配置 创建仓库从远程服务器克隆仓库创建本地仓库 添加和提交文件工作区域和文件状态工作区域文件状态 查看文件状态及分支信息查看暂存区的内容添加文件提交文件查看提交日志回退…

verilog设计-cdc:多比特信号跨时钟域(DMUX)

一、前言 多比特一般为数据,其在跨时钟域传输的过程中有多种处理方式,比如DMUX,异步FIFO,双口RAM,握手处理。本文介绍通过DMUX的方式传输多比特信号。 二、DMUX同步跨时钟域数据 dmux表示数据分配器,该方…

ChatGLM3:AttributeError_ can‘t set attribute ‘eos_token‘

最近在微调 ChatGLM3-6b 时,训练好模型之后,调用inference_hf.py函数验证模型的时候报了如下错误,下面是解决方案。 我在训练时使用的是ptuning_v2.yaml配置文件,训练运行代码如下: CUDA_VISIBLE_DEVICES1 python fi…

3.Labview字符串与路径精讲(下) — 字符串及路径的使用

本章讲解labview中的字符串和路径具体实践用例,从前面板字符串属性到后面板字符串函数应用做出详细概述,通过本文的学习希望大家了解到字符串及路径在labview编程中的重要地位。 本系列文章为labview 从基础到强化到精通的学习文章,大家可以随…

Unity3d使用Jenkins自动化打包(Windows)(二)

文章目录 前言一、Unity工程准备二、Unity调取命令行实战一实战二实战三实战四实战五 总结 前言 自动化打包的价值在于让程序员更轻松地创建和管理构建工具链,提高编程效率,将繁杂的工作碎片化,变成人人(游戏行业特指策划&#x…

RegSeg 学习笔记(待完善)

论文阅读 解决的问题 引用别的论文的内容 可以用 controlf 寻找想要的内容 PPM 空间金字塔池化改进 SPP / SPPF / SimSPPF / ASPP / RFB / SPPCSPC / SPPFCSPC / SPPELAN  ASPP STDC:short-term dense concatenate module 和 DDRNet SE-ResNeXt …

如何为企业策划一场XR虚拟直播?

活动年年办,都是老一套,想玩点新花样? 预算有限,但还是想把活动办的逼格高一点? 想通过活动,让更多的人知道自己企业的品牌? 随着AIGC技术的不断演变,企业活动的形式和内容也在不…

Linux中的vim/vi编辑器

VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器。 VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器,可以说是:编辑器之神。可以主动的以字体颜 色辨别语法的正确性,方便程序设计。VIM 与 VI 编辑器完全兼容。 一:三种…

MoonBit MeetUp回顾——张正、宗喆:编程语言在云原生与区块链领域的技术探索

宗喆和张正分别给我们带了 KCL 相关的最新进展,由蚂蚁集团开发的 Rust 编写的开源 DSL,目标是优化云原生策略配置和用户体验。它通过引入动态配置管理、配置校验和基础设施抽象等核心概念,解决开发者认知负担、配置膨胀和标准化工具缺乏的问题…

Unity AI Navigation自动寻路

目录 前言一、Unity中AI Navigation是什么?二、使用步骤1.安装AI Navigation2.创建模型和材质3.编写向目标移动的脚本4.NavMeshLink桥接组件5.NavMeshObstacle组件6.NavMeshModifler组件 三、效果总结 前言 Unity是一款强大的游戏开发引擎,而人工智能&a…

Swagger添加JWT验证(ASP.NET)

文章目录 JWT1、解析2、配置JWT JWT 1、解析 1)客户端向授权服务系统发起请求,申请获取“令牌”。 2)授权服务根据用户身份,生成一张专属“令牌”,并将该“令牌”以JWT规范返回给客户端 3)客户端将获取到的…

Kafka重要配置参数全面解读(重要)

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Kafka重要配置参数全面解读(重要 前言auto.create.topics.enableauto.leader.rebalance.enablelog.retention.{hour|minutes|ms}offsets.topic.num.partitions 和 offsets.topic.replication.factorlo…

php 快速入门(七)

一、操作数据库 1.1 操作MySQL的步骤 第一步:登录MySQL服务器 第二步:选择当前数据库 第三步:设置请求数据的字符集 第四步:执行SQL语句 1.2 连接MySQL 函数1:mysql_connect() 功能:连接(登录…

软件概要设计说明书word原件(实际项目)

一、 引言 (一) 编写目的 (二) 范围 (三) 文档约定 (四) 术语 二、 项目概要 (一) 建设背景 (二) 建设目标 (三&a…

分类任务中的评估指标:Accuracy、Precision、Recall、F1

概念理解 T P TP TP、 T N TN TN、 F P FP FP、 F N FN FN精度/正确率( A c c u r a c y Accuracy Accuracy) 二分类查准率 P r e c i s i o n Precision Precision,查全率 R e c a l l Recall Recall 和 F 1 − s c o r e F1-score F1−s…