鸿蒙5.0开发【编译异常,无具体错误日志,难以定位问题】应用运维

问题现象

出现Failed to execute es2abc. 但是没有具体的错误日志,难以对问题进行定位以及原因分析。

问题场景

场景:开发者在源码中使用大量深度嵌套的代码,比如几百层的if-else,as转换,括号嵌套等,在编译的时候由于递归调用导致超出栈容量上限,引发es2abc的闪退,并且没有相关的错误日志。

定位方案

在windows上,可以打开事件管理器,Windows日志,应用程序,找到对应的时间,如果能找到es2abc.exe的崩溃日志,同时异常代码为 0xc00000fd, 那么表示该编译由于爆栈导致崩溃。

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

在mac上,可以进入控制台,点击崩溃报告,找到es2abc,双击查看崩溃日志。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
如果出现下图中所示,调用栈出现大量反复的调用相同的函数,那么极有可能是出现了大量递归导致爆栈。

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

解决措施

排查代码中有无大量重复嵌套的场景,比如几百层if-else,as转换,括号嵌套等,对其进行拆分或者优化。

问题代码示例

包括但不限于以下问题场景

if (condition) {
     if (condition) {
         if (condition) {
             if (condition) {
                 if (condition) {
                     if (condition) {
                         ...
                     }
                 }
             }
         }
     }
 } 
[
     [
         [
             [
                 [
                     [
                         [
                             [
                                 ... 
                            ]
                         ]
                     ]
                 ]
             ]
         ]
     ]
 ] 
!!!!!!!!!! 
!!!!!!!!!! 
... 
!!!!!a 
var a = 1
a as Int as Int as Int as Int as Int ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值