鸿蒙OpenHarmony【Faultlogger开发指导】子系统DFX

Faultlogger开发指导

概述

功能简介

Faultlogger是OpenHarmony为开发者提供的一个维测日志框架,能够为应用、元能力、系统服务进程崩溃故障提供统一检测、日志采集、日志存储、日志上报功能,为应用崩溃故障提供详细的维测日志用以辅助故障定位。本章节内容适用于标准系统以及Linux内核的小型系统。

FaultLogger承载OpenHarmony系统上的故障记录功能,按照服务对象不同分别运行在两个部件中:

  • Hiview部件中的服务:服务于应用层和native层的功能模块,功能是分类管理系统中发生的各类故障信息,并为模块提供查询故障的API。
  • Faultloggerd部件中的服务:服务于崩溃进程,功能是收集C/C++运行时异常的守护进程和获取进程调用栈。

基于Faultlogger服务,进程崩溃的处理流程如下图所示:

图1 进程崩溃处理流程图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 进程运行时崩溃,内核抛出崩溃信号,用户态SignalHandler响应(进程启动时硬编码注册);
  2. SignalHandler收集好崩溃现场信息(context、fatal message等),设置当前进程ptracer和dumpable状态后,fork出ProcessDump进程进行remote抓栈;
  3. ProcessDump获取到signalhandler通过pipe传输过来的进程crash现场相关信息后,向Faultloggerd申请crash文件句柄;
  4. 基于libunwinder自研回栈能力进行回栈,崩溃日志写入到/data/log/faultlog/temp 目录下的原始crash故障文件;
  5. ProcessDump完成crash文件内容写入后,将精简的crash故障信息打包上报到hiview;
  6. hiview faultlogger插件接收到添加的crash信息后,额外获取hilog信息,在/data/log/faultlog/faultlogger目录下生成面向开发者开发的日志。同时上报到hisysevent和hiappevent;

使用场景

Faultloggerd意在为开发者在开发测试过程中遇到的崩溃或卡死问题提供一种简单轻量的定位手段。

主要包含以下应用场景:

表1 Faultloggerd模块应用场景

场景描述 使用工具 使用方式
了解函数的调用顺序 DumpCatcher API
应用卡死/CPU占用高 DumpCatcher Command Tool
崩溃问题定位 崩溃日志和llvm-addr2line工具

使用DumpCatcher接口获取调用栈

接口说明

DumpCatcher可以抓取OpenHarmony指定进程(线程)的调用栈。

表2 DumpCatcher接口说明

方法 描述
DfxDumpCatcher bool DumpCatch(const int pid, const int tid, std::string& msg, size_t maxFrameNums, bool isJson) 接口返回值: - true:回栈成功,回栈信息存储在msg字符串对象中; - false:回栈失败。 输入参数: - pid:目标进程号; - tid:目标线程号,如果需要回栈进程中的所有线程,则tid设定为0; - maxFrameNums:回栈最大帧数,如果pid不等于调用方pid,则忽略这个参数,该参数默认值为256; - isJson:堆栈消息是否为JSON格式化,该参数默认值为false; 输出参数: - msg:如果回栈成功,则通过msg返回调用栈信息。
DfxDumpCatcher bool DumpCatchMix(const int pid, const int tid, std
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值