文章目录前言第一式hilog 打日志代码实现命令行抓日志核心代码第二式断点调试完整示例神器条件断点代码解析调试实战流程常见误区小白必踩完整可运行示例hilog 调试实现拆解写在最后前言写代码一半时间在调 bug。很多人调 bug 还靠脑补 瞎改效率低得吓人。其实 DevEco 的调试工具很强大关键是你会不会用。这篇文章我讲两个最实用的调试手段hilog 日志和断点调试。从打日志的规范写法到条件断点这种神器看完你调 bug 能快一倍。第一式hilog 打日志别再用console.log了鸿蒙官方日志是hilog它能按级别、按标签过滤还能脱敏。代码实现import{hilog}fromkit.PerformanceAnalysisKithilog.info(0x0001,MyTag,user%{public}s age%{d},Tom,18)逐参数讲0x0001日志域domain你自己定一个十六进制数区分模块。MyTag标签过滤日志时按它筛。user%{public}s age%{d}格式化串%{public}s表示明文输出%{private}s会自动脱敏适合手机号、token。级别对照级别方法用途Debughilog.debug开发期排查Infohilog.info常规信息Warnhilog.warn警告Errorhilog.error错误红色最显眼命令行抓日志连上设备用hdc抓指定标签核心代码hdc shell hilog|grepMyTag# 只看 MyTag 的日志hdc shell hilog-bD# 打开 Debug 级别输出真机调试时这招比在 IDE 里翻日志快得多。第二式断点调试日志是事后看断点是现场暂停。在 DevEco 里点行号左侧下断点用 Debug 模式运行程序跑到这行会暂停你能看所有变量的值。完整示例functioncalculate(items:Item[]){lettotal0for(constitofitems){// ← 在这里下断点totalit.price*it.count}returntotal}暂停时你可以看items、total当前值单步执行Step Over/Into进调用栈看是谁调进来的。神器条件断点循环跑 1000 次你只想在第 999 次停普通断点会停 1000 次。右键断点 → 编辑条件代码解析it.price 0 // 只在价格为负时停专门抓异常数据条件断点让你只在出问题的那次暂停效率拉满。调试实战流程遇到 bug我的标准流程先hilog.error在可疑处打日志看值对不对。复现后在关键行下条件断点暂停看现场。单步执行定位是哪一行算错。改完去掉调试日志上线前别留 debug 日志。常见误区小白必踩误区说明用console.log不用hiloghilog 能按级别/标签过滤还能脱敏调试体验天差地别。敏感信息不脱敏token、手机号直接打日志用%{private}s自动脱敏。不会用条件断点循环跑 1000 次只想停第 999 次右键断点设条件效率倍增。上线留 debug 日志发布前清掉 debug 级日志别让信息随包流出。下面这段代码可以直接复制到 DevEco Studio 里运行。建议你边读边敲改一改文末「动手改一改」里的参数亲眼看看效果。完整可运行示例hilog 调试用分级日志定位问题。实现拆解// hilog 分级别打印便于过滤import{hilog}fromkit.PerformanceAnalysisKitconstDOMAIN0x0001hilog.info(DOMAIN,Lifecycle,页面创建了)hilog.warn(DOMAIN,Net,请求较慢%{public}d ms,800)hilog.error(DOMAIN,DB,插入失败%{public}s,constraint)// 在组件里EntryComponentstruct Demo{aboutToAppear(){hilog.info(DOMAIN,Demo,aboutToAppear 触发)}build(){Column(){Text(看 Log)}.padding(20)}}你会看到什么DevEco 的 Log 面板按DOMAIN和Lifecycle/Net/DB标签过滤能快速找到你打的日志。%{public}表示日志内容明文可见敏感信息用%{private}。动手改一改把info改成debug并在过滤框设级别看低级别日志被屏蔽。用%{public}s带变量避免字符串拼接。结合断点在aboutToAppear处停住看调用栈。写在最后调试的两大武器hilog 看流程、断点看现场。日志适合事后追溯断点适合当场拆解。条件断点是效率倍增器务必学会。提醒上线前把debug级日志清掉或关掉别让敏感信息随包发出去。下次调 bug先别急着改代码下个断点看看现场——往往真相一眼就明了。