在测试过程中,发现某些进程异常退出难以确定是因为什么退出的。例如App没有使用backgroundTaskManager.startBackgroundRunning启动长时任务,并且长时在后台使用AudioCapturer录制麦克风,则有概率会异常退出。但在出现异常退出之后,非常难以追溯并确定异常出现的原因。
1、查看了/data/log/faultlog,并无生成。
2、查看了/data/log/hilog/hilog\_kmsg.xxx.gz,里面并没有记在类似app exit code之类的内容。
3、查看了/data/log/hilog/hilog.xxx.gz,发现是一个非文本文件。
4、如果出现异常退出时,正好连接着DevEco,可以收集到hilog中包含以下内容:
07-01 15:54:58.721 882 1187 E C01713/SUSPEND_MANAGER: [audio_proc.cpp(CheckAudioCapturer):102] AudioCapturer cannot be used after being frozen. The system will kill the UID: 20020086. sourceType is 7, capturerFlags is 0
07-01 15:54:58.722 882 1187 I C01713/SUSPEND_MANAGER: [suspend_manager_impl.cpp(FreezeFreezeUnit):1349] Application 20020086_com.liteav.demo_[27760,] current has media and not apply background_task or ResourceType::AUDIO
07-01 15:54:58.723 882 32368 I C01713/SUSPEND_MANAGER: [freeze_condition_checker.cpp(KillApplicationByUid):62] kill running application, app name is com.xxx.demo, uid is 20xxx0086
可使用错误管理的接口,在应用退出前及时将相关错误及日志上报到开发者的服务平台来定位问题,参考错误监听(ErrorObserver)接口功能介绍:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/errormanager-guidelines-V5\#接口说明
获取/data/log/hilog/hilog.xxx.gz文件,当前hilog日志为编码后二进制形式保存的gz格式文件,可使用hilogtool进行解析: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/hilog-tool-V5