1.   获取需要适配asan版本的工程代码 

2.  修改必要的asan编译报错 (有些代码正式版本没有报错 asan版本特有)

      sig仓 修改编译报错  

      路径: \developtools\profiler\bundle.json 中删除  "//developtools/profiler/hiebpf:hiebpf_tool"

3.   调整sig仓 system.img  和 vendor.img 分区大小 (asan版本比一般版本的有两套so 正常版本so asan版本需要的内存和空间比平常版本要大)

      路径:build\ohos\images\mkimage\system_image_conf.txt 4365918336 or 6442448896

      路径:build\ohos\images\mkimage\vendor_image_conf.txt 468434944

4.   调整sig仓 system_image 镜像分区大小 5000 (默认3000) 配置镜像大小

     路径: sig_laval_make_pac/pac/ImageFiles/src_uis7885_2h10.xml   <Partition id="system" size="5000"/> or 7000

5.   全量服务编译指令:

    5.1 laval工程 编译laval工程 (产品配置相关的工程)
      ./build/common/asan/build_mixed_asan.sh --product-name oriole --ccache --build-variant root --target-cpu arm64 --no-data-asan --no-prebuilt-sdk

    5.2 sig工程 (服务应用相关的工程)
      ./build.sh --product-name oriole --ccache --patch
      ./build/common/asan/build_mixed_asan.sh --product-name oriole --ccache --build-variant root --target-cpu arm64 --no-data-asan  若有编译报错可能需要删掉 正常镜像的中间产物然后进行尝试

6.  组成完整的asan包并进行烧录 
      ./sig_laval_make_pac/make_pac  (5.0 需要把sig仓 和 laval仓同时打包生成完整的镜像)

     导入laval工程 out/xxxx/packages/phone/image 目录下的pac包进行烧录 

7.  设置开启asan的应用 或者 服务 (asan版本默认是不进行配置 需要手动打开)

     设备/etc/param/sanitizerd.para   文件内容如下 wrap.xxx=asan_wrapper   xxx代码具体的服务和应用

     wrap.com.ohos.photos=asan_wrapper   // com.ohos.photos 为应用的进程名
     wrap.hilogd=asan_wrapper                    // hilogd 为系统服务的进程

     服务应用一般分开进行配置   服务应用自定义随系统本身的承压能力 5.0 服务可以一起配置

8.  asan.options配置文件设置配置asan具体检测项 /etc 目录  具体的文件内容如下 1代表支持 0不支持

9.  重启设备然后确认配置的应用或者服务是否加载的asan目录下的so

      打开应用或者拉起服务,查询进程号: 指令ps -ef | grep  xxxx,    然后cat /proc/进程号/maps |grep asan , 
      查询是否加载的/system/asan/目录下的so,   如果是说明版本编译和设置都成功,可以压测复现问题,

      如果没有加载相关so则说明版本未生效 需要查询上述配置流程。

 

10.   asan故障日志反编译 

        asan问题日志目录在设备 /data/log/sanitizer/ubsan   该目录下 有log文件生成就说明有asan问题报错 需要处理

11.   asan 问题分析处理 

     取了asanlog 需要借助反编译工具  addr2line 完成反编译流程 (需要安装python工具)

      可以实现整个文件 或者 单个so的反编译均可  如果有cppcrash类型报错可以参照 

      [OpenHarmony稳定性测试问题定界思路_shuguang-Laval社区](https://laval.csdn.net/64a52f644b952377a23e168b.html)

12.  稳定性场景问题压测

     具体可以参照:稳定性测试自动化脚本使用介绍_zhengxiaobo-Laval社区

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐