一文彻底拿下HarmonyOS NEXT开发实战调试技巧

简介: 这是一篇关于HarmonyOS NEXT开发调试技巧的文章,作者是一名经验丰富的程序员Feri。内容涵盖三种调试方法:预览+日志方式(适合简单调试,需注意数据类型转换)、断点调试(详细介绍了设置步骤与功能键使用)以及hilog实战使用(日志打印限制为4096字节,推荐封装维护)。通过这些技巧,帮助开发者更高效地解决问题,提升编程能力。

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java、嵌入式、鸿蒙、人工智能等,专注于程序员成长那点儿事,希望在成长的路上有你相伴!君志所向,一往无前!


1.预览+日志的方式debug

这种方式只能进行基本数据类型的打印,适合简单调试

  • 原始类型,也就是非字符串需要String() 或者 .toString()
  • 对象类型,需要JSON.stringify转换
  • 预览器-没事,模拟器-打印必须加前缀 否则找不到

代码示例:

@Entry
@Component
struct Index {
  //记录 点击次数
  @State cs: number = 1

  build() {
    Column() {
      Text('点击次数=' + this.cs)

      Button('打印调试').onClick(() => {

        this.cs++

        // console.log(this.cs)  报错?为什么呢?
        console.log(this.cs.toString())
        console.log(String(this.cs))
        // console.log({id:1,age:22}) 报错?
        console.log(JSON.stringify({ id: 1, age: 22 }))

        // 模拟器必须加前缀
        console.log('Feri ' + this.cs)
      })
    }
  }
}

2.断点调试

以模拟器为例,具体实现步骤:

第一步:编码

@Entry
@Component
struct Index {
  @State message: string='Hello World'

  build() {
    Row(){
      Column() {
        Text(this.message)
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
      }
      .width("100%")
    }
    .height("100%")
  }
}

第二步:打断点

第三步:点击右上角开始调试

点击Debug图标,开始调试。如果您的应用已经在运行,请点击Attach Debugger to Process图标!

当应用运行到代码处,会在代码处停住,并高亮显示。

Debug相关功能键使用

按钮 名称 功能 快捷键

| Resume Program | 当程序执行到断点时停止执行,单击此按钮程序继续执行。 | F9(macOS为Option+Command+R) |
| | Step Over | 在单步调试时,直接前进到下一行(如果在函数中存在子函数时,不会进入子函数内单步执行,而是将整个子函数当作一步执行)。 | F8(macOS为F8) |
|
| Step Into | 在单步调试时,遇到子函数后,进入子函数并继续单步执行。 | F7(macOS为F7) |
|
| Force Step Into | 在单步调试时,强制进入方法。 | Alt+Shift+F7(macOS为Option+Shift+F7) |
|
| Step Out | 在单步调试执行到子函数内时,单击Step Out会执行完子函数剩余部分,并跳出返回到上一层函数。 | Shift+F8(macOS为Shift+F8) |
| | Stop | 停止调试任务。 | Ctrl+F2(macOS为Command+F2) |
|
| Run To Cursor | 断点执行到鼠标停留处。 | Alt+F9(macOS为Option+F9) |

3 hilog实战使用

在应用开发过程中,可在关键代码处输出日志信息。在运行应用后,通过查看日志信息来分析应用执行情况(如应用是否正常运行、代码运行时序、运行逻辑分支是否正常等)。

系统提供不同的API供开发者调用并输出日志信息,即HiLog与console。

hilog日志打印最多打印4096字节,超出限制文本将被截断。

具体示例代码如下所示:

import { hilog } from '@kit.PerformanceAnalysisKit';

@Entry
@Component
struct Index {
  build() {
    Column() {
      Button('打印调试').onClick(() => {
        // 铺垫1:十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作十六进制数字。
        // 铺垫2:计算机信息都是0和1表示的也就是二进制,单对于人类来说二进制太长 -> 需要做精简,因此转化为十六进制 hexadecimal 简称 hex
        // 铺垫3:在 C 语言中,十六进制数以”0x”或“0X”开头,A表示10,F表示16。
        // 铺垫4:此后00000000~11111111就可以用0x00~0xFF来表示了。

        // info函数第1个参数  domain:用于指定输出日志所对应的业务领域,取值范围为0x0000~0xFFFF,开发者可以根据需要进行自定义。 例如win蓝屏代码0x00000ffff是一个错误代码
        // info函数第1个参数  tag:用于指定日志标识,可以为任意字符串,建议标识调用所在的类或者业务行为。tag最多为31字节,超出后会截断,不建议使用中文字符,可能出现乱码或者对齐问题。
        hilog.info(0xFF00, "slj", 'hello');
      })
    }
  }
}

封装起来用相对方便后期维护

实战推荐@open/log

示例代码,如下所示:

ohpm install @open/log 

import log from '@open/log';
log.info(数据)

好啦,关于HarmonyOS NEXT开发实战调试技巧就说到这里啦。

相关文章
|
5天前
|
人工智能 JavaScript API
【HarmonyOS NEXT+AI】问答03:找不到DevEco Studio Cangjie Plugin下载链接?
本文针对学员在“HarmonyOS NEXT+AI大模型打造智能助手APP(仓颉版)”课程中提出的问题进行解答:为何无法在华为开发者社区官网找到DevEco Studio Cangjie Plugin下载链接。文中详细介绍了Cangjie Plugin的功能及获取方式,包括STS和Canary版本的申请流程,并提供了学习仓颉编程语言的资源与建议。对于普通开发者,STS版本是当前首选;同时,通过课程与官方教程,可快速掌握仓颉语言核心语法及API,助力开发HarmonyOS NEXT AI智能助手应用。
31 3
【HarmonyOS NEXT+AI】问答03:找不到DevEco Studio Cangjie Plugin下载链接?
|
21天前
|
人工智能 物联网 Android开发
【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
158 92
|
18天前
|
人工智能 JavaScript 数据安全/隐私保护
鸿蒙开发难题多到崩溃?然而 10 亿终端暗藏财富密码-卓伊凡
鸿蒙开发难题多到崩溃?然而 10 亿终端暗藏财富密码-卓伊凡
47 5
鸿蒙开发难题多到崩溃?然而 10 亿终端暗藏财富密码-卓伊凡
|
6天前
|
人工智能 前端开发 物联网
【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
28 0
【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
|
13天前
|
存储 安全 算法
鸿蒙NEXT如何保证应用安全:详解鸿蒙NEXT数字签名和证书机制
本文对鸿蒙NEXT公开资料进行了深入分析和解读,梳理了鸿蒙单框架应用的签名机制,拆解每一步的实操过程和背后的实现原理,并对源码分析整理签名的校验机制。从中管中窥豹,探究鸿蒙系统的安全设计思路,给从事鸿蒙研发的同学提供一些借鉴。
88 3
|
11天前
|
缓存 开发工具 开发者
鸿蒙NEXT开发App相关工具类(ArkTs)
这段代码展示了一个名为鸿蒙NEXT开发 `AppUtil` 的工具类,主要用于管理鸿蒙应用的上下文、窗口、状态栏、导航栏等配置。它提供了多种功能,例如设置灰阶模式、颜色模式、字体类型、屏幕亮度、窗口属性等,并支持获取应用包信息(如版本号、包名等)。该工具类需在 UIAbility 的 `onWindowStageCreate` 方法中初始化,以便缓存全局变量。代码由鸿蒙布道师编写,适用于鸿蒙系统应用开发,帮助开发者更便捷地管理和配置应用界面及系统属性。
|
7天前
|
前端开发 API 开发工具
一年撸完百万行代码,企业微信的全新鸿蒙NEXT客户端架构演进之路
本文将要分享的是企业微信的鸿蒙Next客户端架构的演进过程,面对代码移植和API不稳定的挑战,提出了DataList框架解决方案。通过结构化、动态和认知三重熵减机制,将业务逻辑与UI解耦,实现数据驱动开发。采用MVDM分层架构(业务实体层、逻辑层、UI数据层、表示层),屏蔽系统差异,确保业务代码稳定。
67 0
|
移动开发 Ubuntu 网络协议
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(中)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令
241 1
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(中)
|
XML Web App开发 开发框架
鸿蒙开发入门 | 开发第一个鸿蒙应用+页面跳转
准备好鸿蒙开发环境后,接下来就需要创建鸿蒙项目,掌握项目的创建过程以及配置。项目创建好后,需要把项目运行在模拟器上,鸿蒙的模拟和安卓模拟器有些不同,鸿蒙提供远程模拟器和本地模拟器,通过登录华为账号登录在线模拟器,使用DevEco Studio可将项目部署到远程模拟器中。
1371 1
鸿蒙开发入门 | 开发第一个鸿蒙应用+页面跳转
|
存储 Ubuntu 前端开发
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(下)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令
412 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(下)