为追求C/C++的极致性能,编译器和OS(Windows/Linux/Mac)运行框架不会对内存操作进行安全检测。针对该场景,DevEco Studio集成ASan(Address-Sanitizer)为开发者提供面向C/C++的地址越界检测能力,并通过FaultLog展示错误的堆栈详情及导致错误的代码行。关于ASan的检测原理请参考ASan检测原理。


"asanEnabled": true

在需要开启ASan的模块中,通过添加构建参数开启ASan检测插桩,在对应模块的模块级build-profile.json5中添加命令参数:
"arguments": "-DOHOS_ENABLE_ASAN=ON"

该参数未配置不会报错,但是除包含malloc和free函数等少数内存错误外,出现其他需要插桩检测的内存错误时,ASan无法检测到错误。
ASAN_OPTIONS用于在运行时配置ASan的行为,包括设置检测级别、输出格式、内存错误报告的详细程度等。ASAN_OPTIONS支持在app.json5中配置,也支持在Run/Debug Configurations中配置。app.json5的优先级更高,即两种方式都配置后,以app.json5中的配置为准。关于ASAN_OPTIONS的配置方式和常用参数请参考配置参数。
