
# 使用指南
#### 使用场景
- 疑似系统内存问题需要定位时。
- 开发过程中需要验证是否存在内存问题时。
 
#### 使用流程
1. 在被检测模块的Makefile文件里，增加LMS检测编译选项-fsanitize=kernel-address。
2. 为避免编译器优化，通过menuconfig配置编译器不优化： LOSCFG_COMPILER_OPTIMIZE_NONE=y 【Compiler --\> Optimize Option --\> Optimize None】
   
3. LMS只适配了bestfit内存算法，且不支持SLAB算法，需要开启如下配置项： LOSCFG_KERNEL_MEM_BESTFIT=y【Kernel --\> Memory Management --\> Dynamic Memory Management Algorithm --\> bestfit】
   LOSCFG_KERNEL_MEM_SLAB_EXTENTION is not set【Kernel --\> Memory Management --\> Enable Mem SLAB Extension】
   
4. 为输出Backtrace信息，需要开启配置项： LOSCFG_BACKTRACE=y【Debug --\> Enable Backtrace】
   
5. 开启LMS配置项： LOSCFG_KERNEL_LMS=y【Debug --\> Enable Lite Memory Sanitizer】
   
6. 重新编译，查看串口输出。如果检测到内存问题，会输出检测结果。LMS输出的检测信息类似下图所示： ![](https://support.huaweicloud.com/maintenance-LiteOS/zh-cn_image_0305361111.png)
   LMS检测信息包含下述几类信息：
   - 检测到的内存问题，示例图中为释放后使用Use After Free
   
   - 发生问题的内存地址，示例图中为0x804308cb。
   
   - 发生问题的内存地址对应的影子内存及该影子内存的值，示例图中影子内存地址为0x83c7b74c，该地址的值为01。
   
   - 发生问题的内存地址前后内存的取值。
   
   - 当前运行的任务，示例图中为IT_TST_INI，任务ID为4。
   
   - 发生问题时的backtrace回溯栈。
     
 
#### 平台差异性
无。
