一文彻底拿下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开发实战调试技巧就说到这里啦。

相关文章
|
6天前
|
监控 JavaScript 编译器
从“天书”到源码:HarmonyOS NEXT 崩溃堆栈解析实战指南
本文详解如何利用 hiAppEvent 监控并获取 sourcemap、debug so 等核心产物,剖析了 hstack 工具如何将混淆的 Native 与 ArkTS 堆栈还原为源码,助力开发者掌握异常分析方法,提升应用稳定性。
|
7天前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
76 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
13天前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
183 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
14天前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
245 3
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
12天前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
55 0
|
1月前
|
传感器 监控 安全
HarmonyOS NEXT 5.0 的星闪(NearLink)开发应用案例
V哥分享HarmonyOS NEXT 5.0星闪开发实战,涵盖智能车钥匙无感解锁与工业传感器监控。低延迟、高可靠,代码完整,速来学习!
271 0
|
4月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
3月前
|
安全 JavaScript API
鸿蒙开发核心要素
鸿蒙开发核心要素
|
4月前
|
存储 IDE 定位技术
【HarmonyOS 5】鸿蒙组件&模板服务详解 - 助力高效开发的利器
在移动应用开发领域,效率与质量始终是开发者追求的核心目标。鸿蒙系统作为新兴的操作系统,为开发者提供了丰富且强大的开发资源,其中鸿蒙组件&模板服务更是成为开发者快速构建高质量应用的得力助手。
153 0
HarmonyOS NEXT仓颉开发语言实战案例:电影App
周末好!本文分享使用仓颉语言重构ArkTS实现的电影App案例,对比两者在UI布局、组件写法及语法差异。内容包括页面结构、列表分组、分类切换与电影展示等。通过代码演示仓颉在HarmonyOS开发中的应用。##仓颉##ArkTS##HarmonyOS开发

热门文章

最新文章