应用打开发生闪退,主要是发生了JS Crash异常或者CppCrash异常所导致。
该类异常的一般定位思路为:
JS Crash日志包含异常原因及异常堆栈等关键定位信息:
Build info:XXX-XXXX X.X.X.XX(XXXXXXXX) <- 版本信息
Module name:com.example.myapplication <- 模块名
Version:1.0.0 <- 版本号
Pid:579 <- 进程号
Uid:0 <- 用户ID
Reason:TypeError <- 原因
Error message:Cannot read property c of undefined <- 异常信息
Cannot get SourceMap info, dump raw stack: <- 应用安装包为release包安装时不包含sourcemap文件,JS栈通过sourcemap行列号解析会失败
Stacktrace:
at onPageShow (entry/src/main/ets/pages/Index.ets:7:13) <-异常代码调用栈
^ ^
函数名异常代码文件行列号位置 异常场景 | 场景分类 | 检索关键字 |
|---|---|---|
变量不是预期的类型,不能调用对应的属性 | TypeError | Error message:Cannot read property XXX of undefined |
变量不是预期的类型,不能调用对应的方法 | TypeError | Error message:is not callable |
变量不是一个有效的javascript对象 | TypeError | Error message:Receiver is not a JSObject |
变量为只读属性,不能为只读属性赋值 | TypeError | Error message:Cannot assign to read only property |
不能将undefined当作可迭代对象 | TypeError | Error message: undefined is not iterable (cannot read property Symbol(Symbol.iterator))" |
未处理业务错误抛出的异常 | BusinessError | Reason:BusinessError |
字符串的格式不符合JSON语法规范 | SyntaxError | Error message:Unexpected Text in JSON |
没有定义对应key的@Provide变量 | ReferenceError | Error message:@Component XXX missing @Provide property with name XXX.Fail to resolve @ConsumeXXX |
删除/更改重复提供对应@Provide属性 | ReferenceError | Error message:XXXX:duplicate @Provide property with name XXX |
非法参数抛出异常 | Error | Invalid parameter |
依赖注入容器里找不到 xxx 对应的实现绑定 | Error | Error message:No matching bindings found for serviceIdentifier: xxx |
CppCrash常见场景及关键字检索表:
异常场景 | 场景分类 | 检索关键字 |
|---|---|---|
访问了无效内存引用 | SIGSEGV | Reason:Signal:SIGSEGV |
进程异常终止 | SIGABRT | Reason:Signal:SIGABRT |
非法指令异常 | SIGILL | Reason:Signal:SIGILL |
SIGILL二级分类,解释如下:
二级分类 | 信号字符串 | 解释 | 触发原因 |
|---|---|---|---|
1 | ILL_ILLOPC | 非法操作码异常。 | 发生在执行不被CPU支持的指令时,或者在尝试执行特权指令时。 |
2 | ILL_ILLOPN | 非法操作数异常。 | 发生在指令使用了不正确的操作数,或者是操作数的类型不正确时。 |
3 | ILL_ILLADR | 非法地址异常。 | 发生在程序尝试访问无效的内存地址时,或者是在尝试执行未对齐的内存访问时。 |
4 | ILL_ILLTRP | 非法陷阱异常。 | 发生在程序尝试执行一个非法的陷阱指令时,或者是在尝试执行一个未定义的操作时。 |
5 | ILL_PRVOPC | 特权操作码异常。 | 发生在普通用户尝试执行特权指令时。 |
6 | ILL_PRVREG | 特权寄存器异常。 | 发生在普通用户尝试访问特权寄存器时。 |
7 | ILL_COPROC | 协处理器异常。 | 发生在程序尝试使用未定义的协处理器指令时。 |
8 | ILL_BADSTK | 无效的堆栈异常。 | 发生在程序尝试在无效的堆栈地址上执行操作时,或者是在堆栈溢出时。 |
打开对应日志查看内容,确定故障原因是ReferenceError。
Error name:ReferenceError
Error message:@Component XXX missing @Provide property with name XXX.
Fail to resolve @ConsumeXXX.
Stacktrace:
at initializeConsume (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6699:1)
at Home (entry/src/main/ets/pages/Home.ets:6:1)
at anonymous (entry/src/main/ets/pages/Index.ets:154:26)
at updateFunc (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6815:1)
at observeComponentCreation2 (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6842:1)
at anonymous (entry/src/main/ets/pages/Index.ets:154:26) Reason:ReferenceError
Error name:ReferenceError
Error message:VideoVerifyView: duplicate @Provide property with name XXX. Property with this name is provided by one of the ancestor Views already. @Provide override not allowed.
Stacktrace:
Cannot get SourceMap info, dump raw stack:
at addProvidedVar (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6673:1)
at VideoVerifyView (app|app|1.0.0|src/main/ets/pages/scan/view/VideoVerifyView.ts:73:1)
at anonymous (app|app|1.0.0|src/main/ets/pages/scan/VideoVerifyPage.ts:150:1)
at updateFunc (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6815:1)
at observeComponentCreation2 (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6842:1)
at anonymous (app|app|1.0.0|src/main/ets/pages/scan/VideoVerifyPage.ts:148:1)
at ifElseBranchUpdateFunction (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:4300:1)
at anonymous (app|app|1.0.0|src/main/ets/pages/scan/VideoVerifyPage.ts:146:1)
at updateFunc (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6815:1)
at UpdateElement (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6517:1)
at anonymous (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6744:1)
at updateDirtyElements (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6739:1)
at rerender (app|app|1.0.0|src/main/ets/pages/scan/VideoVerifyPage.ts:181:1) 故障原因是TypeError:
Reason:TypeError Error name:TypeError Error message:Cannot read property loadPackage of undefined Stacktrace: Cannot get SourceMap info, dump raw stack: at initPageUrl (entry|entry|1.0.0|src/main/ets/h5common/page/H5Page.ts:3:1)
Reason:TypeError
Error name:TypeError
Error message:is not callable
Stacktrace:
Cannot get SourceMap info, dump raw stack:
at forEachUpdateFunction (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:4352:1)
at anonymous (entry|entry|1.0.0|src/main/ets/pages/Child/CaseRepeat.ts:478:1) Reason:TypeError
Error name:TypeError
Error message:Receiver is not a JSObject
Stacktrace:
Cannot get SourceMap info, dump raw stack:
at anonymous (entry|entry|1.0.0|src/main/ets/view/webview/BasicWebView.ts:932:1)
at anonymous (entry|entry|1.0.0|src/main/ets/view/webview/JsBridge.ts:100:1)
at handlerReturnData (entry|entry|1.0.0|src/main/ets/view/webview/JsBridge.ts:35:1)
at anonymous (entry|entry|1.0.0|src/main/ets/view/webview/BasicWebView.ts:1148:1)
at (entry/src/main/ets/pages/base/WebViewTemplatePage.ets:183:7) Reason:TypeError
Error name:TypeError
Error message:Cannot assign to read only property
Stacktrace:
Cannot get SourceMap info, dump raw stack:
at onPageShow (entry|entry|1.0.0|src/main/ets/pages/Child/VaccSelect.ts:282:1) 从异常信息可以看出,变量不是预期的类型。
故障原因是Error:
Reason:Error
Error name:Error
Error message:Invalid parameter
Error code:
Stacktrace:
Cannot get SourceMap info, dump raw stack:
at anonymous (phone|@ohos/fcpush|1.0.0|src/main/ets/push/InitPushSDK.ts:94:1) 故障原因是BusinessError:
Reason:BusinessError
Error name:BusinessError
Error message:e.message: Unexpected Text in JSON: Invalid Token, e.name: SyntaxError
Error code:
Stacktrace:
Cannot get SourceMap info, dump raw stack:
at BusinessError (/usr1/hmos_for_system/src/increment/sourcecode/out/generic_generic_arm_64only/general_all_phone_standard/obj/commonlibrary/ets_utils/js_util_module/json/json_js.js:18:1)
at parse (/usr1/hmos_for_system/src/increment/sourcecode/out/generic_generic_arm_64only/general_all_phone_standard/obj/commonlibrary/ets_utils/js_util_module/json/json_js.js:38:1)
at anonymous (entry|entry|1.0.0|src/main/ets/pages/tab/home/funResultLayer.ts:1204:1)
at anonymous (entry|entry|1.0.0|src/main/ets/pages/util/http.ts:379:1) 故障原因是SyntaxError:
Reason:SyntaxError Error name:SyntaxError Error message:Unexpected Text in JSON Stacktrace: Cannot get SourceMap info, dump raw stack: at innerJump (entry|entry|1.0.0|src/main/ets/pages/webview/YQWebView.ts:203:1) at innerJump (entry|base_webview|1.0.0|src/main/ets/webview/BaseJsCallNativeImpl.ts:190:1)
故障信号是SIGSEGV(SEGV_MAPERR):
Uid:20020157 Process name:应用包名 Process life time:2s Reason:Signal:SIGSEGV(SEGV_MAPERR)@000000000000000000 probably caused by NULL pointer dereference Fault thread info: Tid:18211, Name:1.ui #00 pc 0000000000000000 Not mapped #01 pc 0000000000429100 /data/storage/el1/bundle/libs/arm64/libsunloginclient.so(16409f4ecdc715f04b938e5ce840a0c704acac30) #02 pc 000000000075b0bc /data/storage/el1/bundle/libs/arm64/libsunloginclient.so(16409f4ecdc715f04b938e5ce840a0c704acac30) #03 pc 00000000005af6e4 /data/storage/el1/bundle/libs/arm64/libsunloginclient.so(16409f4ecdc715f04b938e5ce840a0c704acac30) #04 pc 0000000000568e24 /data/storage/el1/bundle/libs/arm64/libsunloginclient.so(16409f4ecdc715f04b938e5ce840a0c704acac30) #05 pc 000000000056901c /data/storage/el1/bundle/libs/arm64/libsunloginclient.so(16409f4ecdc715f04b938e5ce840a0c704acac30)
故障信号是SIGABRT(SI_TKILL):
Reason:Signal:SIGABRT(SI_TKILL)@0x01317be700007163 from:29027:20020199 Fault thread info: Tid:29027, Name:XXXXXX #00 pc 0000000000199168 /system/lib/ld-musl-aarch64.so.1(raise+228)(2869c16473050fa2addbe1ee1a3d23c3) #01 pc 0000000000146464 /system/lib/ld-musl-aarch64.so.1(abort+20)(2869c16473050fa2addbe1ee1a3d23c3) #02 pc 00000000001182e0 /data/storage/el1/bundle/libs/arm64/libestarx_sdk.so(02a23a55c2e05b8f6f1993b0e68e0c2cc61294c7) <- 调用abort的so库 #03 pc 0000000000117d20 /data/storage/el1/bundle/libs/arm64/libestarx_sdk.so(02a23a55c2e05b8f6f1993b0e68e0c2cc61294c7)
Uid:20020169 Process name:应用包名 Process life time:18446744073709547675s Reason:Signal:SIGABRT(SI_TKILL)@0x01317bc900000a02 from:2562:20020169 LastFatalMessage:terminating due to uncaught exception of type std::__h::system_error: random_device got an unexpected error: Bad file descriptor Fault thread info: Tid:2562, Name:线程名 #00 pc 0000000000199e1c /system/lib/ld-musl-aarch64.so.1(raise+228)(6b9883f518515f73e093bce9a89a2548) #01 pc 0000000000146f8c /system/lib/ld-musl-aarch64.so.1(abort+20)(6b9883f518515f73e093bce9a89a2548) #02 pc 00000000000adc34 /system/lib64/libc++.so(7817a009937816a1f11f1e7673c1e796f9d24b58) #03 pc 00000000000971f8 /system/lib64/libc++.so(7817a009937816a1f11f1e7673c1e796f9d24b58) #04 pc 00000000000acef8 /system/lib64/libc++.so(7817a009937816a1f11f1e7673c1e796f9d24b58) #05 pc 00000000000afeb8 /system/lib64/libc++.so(7817a009937816a1f11f1e7673c1e796f9d24b58) #06 pc 00000000000afe34 /system/lib64/libc++.so(__cxa_throw+124)(7817a009937816a1f11f1e7673c1e796f9d24b58) #07 pc 00000000000d1aa4 /system/lib64/libc++.so(std::__h::__throw_system_error(int, char const*)+96)(7817a009937816a1f11f1e7673c1e796f9d24b58) #08 pc 00000000000d277c /system/lib64/libc++.so(std::__h::random_device::operator()()+168)(7817a009937816a1f11f1e7673c1e796f9d24b58) #09 pc 0000000000015dec /system/lib64/libhuaweiid_native_base.z.so(HMS::HuaweiId::SystemUtil::get_random(unsigned int, unsigned int) (.cfi)+84)(ebd50acd72f8ae96c384ac230dfaab8a) <- 异常抛出位置 #10 pc 0000000000010acc /system/lib64/libhuaweiid_native_base.z.so(HMS::HuaweiId::HiAppEventUtils::GenerateTransId() (.cfi)+184)(ebd50acd72f8ae96c384ac230dfaab8a) #11 pc 0000000000010c08 /system/lib64/libhuaweiid_native_base.z.so(HMS::HuaweiId::HiAppEventUtils::BuildEventKey(int) (.cfi)+52)(ebd50acd72f8ae96c384ac230dfaab8a) #12 pc 0000000000029b98 /system/lib64/module/hms/core/libauthentication.z.so(HMS::HuaweiId::NapiAccountCapabilityScheduler::ExecuteCommonRequest(napi_env__*, napi_callback_info__*, bool)+1848)(1e1a51499a827de407d5f0af2731db35) #13 pc 000000000003ec44 /system/lib64/platformsdk/libace_napi.z.so(panda::JSValueRef ArkNativeFunctionCallBack<true>(panda::JsiRuntimeCallInfo*)+212)(edf034e044dbf26f955142c343577527) #14 pc 0000000000405b2c /system/lib64/module/arkcompiler/stub.an(RTStub_PushCallArgsAndDispatchNative+40) #15 at getQuickLoginAnonymousPhone (XXXX|4.0.4|src/main/ets/quickLogin/QuickLoginService.ts:39:1) #16 at quickLoginInit (XXXX|4.0.4|src/main/ets/quickLogin/QuickLoginService.ts:18:1) #17 at QuickLogin (XXXX|2.2.2|src/main/ets/initialization/sdkinit/QuickLogin/index.ts:0:1) #18 at anonymous (XXXX|2.2.2|src/main/ets/entryability/BasicEntryAbility.ts:0:1)
故障信号是SIGILL(ILL_ILLOPC):
Uid:20020930 Process name:应用包名 Process life time:18446744073709072495s Reason:Signal:SIGILL(ILL_ILLOPC)@000000000000000000 Fault thread info: Tid:29089, Name:线程名 #00 pc 000000000003319c /data/storage/el1/bundle/libs/arm64/libmyjsi.so(1bd9227cd6d2583529a2f406bc718a0a69925f03) #01 pc 0000000000045344 /data/storage/el1/bundle/libs/arm64/libmyjsi.so(1bd9227cd6d2583529a2f406bc718a0a69925f03) #02 pc 0000000000bb1c60 /data/storage/el1/bundle/libs/arm64/libmyv8.so(v8::internal::MemoryAllocator::SetPermissionsOnExecutableMemoryChunk(v8::internal::VirtualMemory*, unsigned long, unsigned long, unsigned long)+192)(15166f2e78bd7f87) #03 pc 0000000000bb19a4 /data/storage/el1/bundle/libs/arm64/libmyv8.so(v8::internal::MemoryAllocator::AllocateAlignedMemory(unsigned long, unsigned long, unsigned long, v8::internal::Executability, void*, v8::internal::VirtualMemory*)+292)(15166f2e78bd7f87) #04 pc 0000000000bb1e6c /data/storage/el1/bundle/libs/arm64/libmyv8.so(v8::internal::MemoryAllocator::AllocateUninitializedChunk(v8::internal::BaseSpace*, unsigned long, v8::internal::Executability, v8::internal::PageSize)+152)(15166f2e78bd7f87) #05 pc 0000000000bb2778 /data/storage/el1/bundle/libs/arm64/libmyv8.so(v8::internal::MemoryAllocator::AllocatePage(v8::internal::MemoryAllocator::AllocationMode, v8::internal::Space*, v8::internal::Executability)+204)(15166f2e78bd7f87)