鸿蒙开发之崩溃信息收集FaultLogger

发布时间:2023年12月28日

前申:果然系统的API没有让我失望,日志完全看不出来崩溃原因所在

一、使用

  logCrash() {
    FaultLogger.query(FaultLogger.FaultType.JS_CRASH,(err,val) => {
        if (err) {
          console.log('fault log get an err'+JSON.stringify(err))
          return
        }
      let len = val.length
      for (let i = 0; i < len; i++) {
        //FaultLogInfo
          let logInfo = val[i]
        console.log('fault log reason '+logInfo.reason)
        console.log('fault log pid'+logInfo.pid)
        console.log('fault log uid'+logInfo.uid)
        console.log('fault log type'+logInfo.type)
        console.log('fault log timestamp'+logInfo.timestamp)
        console.log('fault log module'+logInfo.module)
        console.log('fault log summary'+logInfo.summary)
        console.log('fault log fullLog'+logInfo.fullLog)
        console.log('========== fault log end ==========')
      }
    })
  }

贴一下打印结果:

这个打印结果让我很迷茫啊,这能给我带来什么信息呢?reason没有,fullLog也啥有用信息没有。唉~~

不过,还是记录一下这个API吧。

API官方解释可以通过FaultLogger.query方法获取故障信息,然后通过FaultType的类型来获取不同的故障信息。如:NO_SPECIFIC(不区分故障类型)、APP_FREEZE(应用程序卡死故障类型)、JS_CRASH(JS程序故障类型)和CPP_CRASH(C++程序故障类型)。

二、遇到的注意点

我在制造崩溃的时候开始使用的代码是这样的

  makeAFaultCrash() {
    let names: string[] = []
    //制造一个数组越界的崩溃
    console.log('制造一个崩溃'+(names[2]))
  }

这在ArkTS中不会崩溃,除非我对names[2]再调用方法才会崩溃,即

 makeAFaultCrash() {
    let names: string[] = []
    //这样才会崩溃
    console.log('制造一个崩溃'+(names[2]).length)
  }

文章来源:https://blog.csdn.net/Lu_Ca/article/details/135261852
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。