在JS运行时环境中,多线程的安全问题是一个重要的考虑因素。由于JavaScript主线程是单线程的,在主线程中创建的JS对象(尤其是DOM相关对象)只能在主线程上进行操作。如果违反了这一规则,就会导致多线程安全问题。针对该场景,DevEco Studio集成多线程检测能力,并通过FaultLog展示错误的堆栈详情及导致错误的代码行。关于多线程检测的原理请参考原理介绍。
开启多线程检测会有较大性能损耗,请开发者按需开启。
可通过以下方式开启方舟多线程检测。
点击Run > Edit Configurations > Diagnostics,勾选Multi Thread Check。

通过命令行开启。
hdc shell aa start -a {abilityName} -b {bundleName} -R 如果是通过方式三调用setMultithreadingDetectionEnabled接口开启,发生多线程安全问题时,该接口支持应用崩溃和不崩溃两种场景。若设置为崩溃,则应用退出并生成cppcrash日志;若设置为不崩溃,应用不会退出,同时生成arktsenvsan日志,此时应用可通过hiAppEvent订阅地址越界事件来感知多线程安全问题,并生成hilog日志。

在进行ArkTS项目开发中可能存在需要加载native模块的场景,开启方舟native模块加载异常信息增强功能后,可以丰富ArkTS项目中因加载native模块导致的报错信息,以便更准确地进行native问题定位。