一文彻底拿下HarmonyOS NEXT开发实战调试技巧
> 程序员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开发实战调试技巧就说到这里啦。
一文彻底拿下HarmonyOS NEXT开发实战调试技巧的更多相关文章
- iOS开发的调试技巧
关于本文: 1.模拟器的快捷键 2.覆盖安装注意事项 3.给模拟器相册增加照片 4.模拟器中程序的数据 5.安装旧版本的模拟器 6.模拟慢网速 7.异常断点与符号断点 1.模拟器的快捷键 常用的模拟器 ...
- 移动端H5页面编辑器开发实战--经验技巧篇
很久前的写的文章了,转载下发到这里 原本地址: https://blog.csdn.net/tech_meizu/article/details/52484775
- C#硬件开发业务流程调试技巧
C#硬件开发,一种是调用厂家提供的api;另一种就是通过com口,发送命令,和硬件通信.这2种方法,如果有硬件,业务流程很好调试.但是大部分硬件,只有和客户联调才会有硬件调试的机会.那业务流程没有硬件 ...
- android开发之调试技巧 分类: android 学习笔记 2015-07-18 21:30 140人阅读 评论(0) 收藏
我们都知道,android的调试打了断点之后运行时要使用debug as->android application 但是这样的运行效率非常低,那么我们有没有快速的方法呢? 当然有. 我们打完断点 ...
- android开发之调试技巧
我们都知道,android的调试打了断点之后运行时要使用debug as->android application 但是这样的运行效率非常低,那么我们有没有快速的方法呢? 当然有. 我们打完断点 ...
- 21 javaweb开发--bug调试技巧
1.当修改代码后,测试时没有任何效果 解决方案:换个浏览器试试,可能是浏览器缓存的原因.
- Visual Studio原生开发的10个调试技巧
这篇文章只介绍了一些有关Visual Studio的基本调试技巧,但是还有其他一些同样有用的技巧.我整理了一些Visual Studio(至少在VS 2008下)原生开发的调试技巧.(如果你是工作在托 ...
- Visual Studio原生开发的10个调试技巧(一)
最近碰巧读了Ivan Shcherbakov写的一篇文章,<11个强大的Visual Studio调试小技巧>.这篇文章只介绍了一些有关Visual Studio的基本调试技巧,但是还有其 ...
- Visual Studio原生开发的10个调试技巧(转)
本文由 伯乐在线 - JingerJoe 翻译自 Marius Bancila.转载请参见文章末尾处的要求. [感谢@_La_Isla_Bonita 的热心翻译.如果其他朋友也有不错的原创或译文, ...
- Visual Studio原生开发的10个调试技巧(二)
来源:oschina 发布时间:2013-08-10 阅读次数:397 51 我以前关于Visual Studio调试技巧的文章引起了大家很大的兴趣,以至于我决定分享更多调试的知识.以下的列表中你 ...
随机推荐
- 百度高效研发实战训练营-Step4
百度高效研发实战训练营-Step4 4.1 代码检测规则:Java案例详解 以Java的案例进行代码检查规则解释,代码检测规则可以分为以下十类: 4.1.1 源文件规范 该类规范,主要为从文件名.文件 ...
- elasticsearch数据导出和导入
数据导入和导出依赖于命令 elasticdump 数据导出 #!/bin/bash ES=http://ip:port ED=数据保存位置 datename=$(date +%Y-%m-%d) #da ...
- 小程序获取定位完整的封装js(uniapp)
1.小程序获取定位,首先需要在微信公众平台,申请getLocation接口(开发管理->接口设置) 2.在manifest.json打开源码视图,增加代码 "mp-weixin&quo ...
- 优化永不止步:TinyVue v3.20.0 正式发布,更美观的官网UI,更友好的文档搜索,更强大的主题配置能力~
你好,我是 Kagol,个人公众号:前端开源星球. 我们非常高兴地宣布,2024年12月4日,TinyVue 发布了 v3.20.0 . 本次 3.20.0 版本主要有以下重大变更: OpenTiny ...
- 数字世界中的纸张——理解 PDF (转载)
转载自 https://type.cyhsu.xyz/2018/09/understanding-pdf-the-digitalized-paper/ 引言 PDF 是我们打交道最多的文件格式之一.提 ...
- 利用坦克PWA3快速为应用配置域名:以Gogs为例
全文概述 本文介绍了如何利用坦克PWA3平台快速为Gogs应用配置域名的过程.随着互联网技术的发展,自托管Git服务变得越来越受欢迎,其中Gogs凭借其轻量级和易于安装的特点受到众多开发者的青睐.为提 ...
- LeetCode刷题:runtime error: reference binding to null pointer of type 'int' (stl_vector.h)报错请教
题目:https://leetcode.cn/problems/merge-intervals/ 错误代码: // 思路初探:做了很多道类似区间操作的题目了.本题就是尽可能少的创建新区间 // 1.首 ...
- GD32F4xx FLASH存储
一.GD32F4xx的内存 GD32F4xx的内存结构由:主存储器.系统信息存储器.一次性编程区域和选项字节等 4 部分组成. 主存储器:用来存放代码和数据常数(如 const 类型的数据).分为 2 ...
- Python 数
Python 数 在Python中,数字是编程中不可或缺的一部分.Python支持多种类型的数字,包括整数.浮点数等.下面我们将详细介绍这些数字类型以及它们之间的运算和格式化. 整数 整数是Pytho ...
- linux mint安装微信
sudo apt install snapd snappy sudo snap install electronic-wechat deepin-music 安装微信与深度音乐