HarmonyOS 鸿蒙Next程序打开直接崩溃了,如何定位问题

发布于 1周前 作者 yibo5220 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next程序打开直接崩溃了,如何定位问题

问题现象

程序打开直接崩溃了,如何定位问题

解决措施

方法1:通过业务日志打印,定位崩溃的代码位置。

方法2:通过Crash文件查看报错信息,Crash文件路径是:/data/log/faultlog/faultlogger/。

7 回复
线上崩溃如何收集,有没有相关文档?

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

tencent的日志组件挺好用的,能否合作尽快搞定兼容问题?https://github.com/Tencent/mars/issues/1221
备忘:Crash文件路径是:/data/log/faultlog/faultlogger/

发一下个人遇到的崩溃原因供大家参考:[API 9, Stage 模型开发, ArkTS代码]

1、新的页面没有在 resources/base/profile/main_pages.json 中注册,跳转到新页面时即崩溃;

2、【最常见原因】代码中调用了未初始化或不存在的对象或变量,报错中通常有 undefined object 之类的,Log 窗口中将日志显示级别改为 Error 级别(顶部第四个下拉窗) 可筛选出报错日志;或者在 Log 窗口顶部从HiLog tab 切换到 FaultLog tab 能看到最近的 js 崩溃记录,点进去可看到具体崩溃代码行,及崩溃原因;不过其中标注的代码行号不太准确,可能是IDE的小bug吧。

3、数组对象索引超出数组范围,可参照2查找源头;

一点调试技巧:

1、对每个方法/函数设置日志标签;在进入方法/函数时显示提示日志;可帮助确认代码出错前进度到达哪一步;

test() {
let tag: string = 'test()==';
Logger.info(tag, `-------------------- enter`); //Logger类及其方法在官方示例中基本都有
...
}

2、在可能出错的代码前面添加日志显示,尤其是对于可能导致错误的对象或变量进行显示;可帮助确认调用前状态;如果担心对象/变量未初始化或不存在,用 if ( xyz == undefined) Logger.info(...) 来确认相应对象/变量是否未定义/未初始化;也可将可能出错的代码段放在 if/else 判断中,来逐个排查是哪个对象或变量可能有问题;

充分利用日志功能排查,基本不上用进行 Debug 操作,而且Debug本身信息多而杂,排查效率并不高,希望有帮助哈:)

欢迎大家贡献经验!

找HarmonyOS工作还需要会Flutter技术的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

HarmonyOS鸿蒙Next程序崩溃,定位问题可尝试以下步骤:

  1. 查看错误日志:使用DevEco Studio的Logcat查看崩溃时的日志,过滤E/或FATAL等关键字找到堆栈跟踪信息。
  2. 使用调试器:如有源代码访问权限,设置断点逐步调试,观察变量值和执行流程。
  3. 检查代码和资源:确保无空指针异常、内存泄漏等问题,且资源文件正确引用。
  4. 兼容性检查:确认鸿蒙系统版本与应用的兼容性,适配鸿蒙系统API。

如果问题依旧没法解决,请加我微信,我的微信是itying888。

回到顶部