内存泄漏分析
Step内的内存问题主要包括内存泄漏、踩踏、内存碎片,导致内存池空闲、内存过多等问题。msMemScope工具当前仅支持内存泄漏问题的定位。
前提条件
- 请使用内存分析功能时,如果需要设置--events参数,请确保--events参数中包含alloc和free。
- 在使用内存分析功能时,请勿设置--steps参数。
在线方式
在进行内存分析时,需配合使用mstx打点功能进行问题定位,mstx打点详情参考《MindStudio mstx API参考》。
- 使用msMemScope工具运行用户程序,Application为用户程序。
msmemscope ${Application} - 执行完成后,会出现如下两种回显信息。
离线方式
msMemScope支持对指定范围内的内存事件进行离线泄漏分析。使用mstx标识好泄漏分析的范围后,可以使用该功能对落盘文件进行分析。
当前离线内存泄漏分析功能仅支持HAL内存泄漏分析。
- 对需要检测泄漏的范围进行mstx的mark打点。mstx打点详情参考《MindStudio mstx API参考》。
- 打点的mark信息将用于离线分析接口的输入。
- 使用mark打点功能标记三个点,分别称为A、B、C。在A到B范围内申请的内存,需要在C点前全部释放,否则会被判定为内存泄漏。
- 执行以下命令,使用msMemScope工具运行用户程序,获取落盘csv文件,Application为用户程序。
msmemscope ${Application} - 执行以下命令,调用Python接口,对输出的csv文件进行离线泄漏分析。
1 2
import msmemscope msmemscope.check_leaks(input_path="user/memscope.csv",mstx_info="test",start_index=0)
其中参数信息如下:
- input_path:csv文件所在路径,需使用绝对路径。
- mstx_info:mark打点使用的mstx文本信息,用于标识泄漏分析的范围。
- start_index:内存泄漏分析开始的打点位置编号,即从第几个符合条件的mstx打点位置开始分析。
如果出现图3的回显信息,表示存在内存泄漏问题。
父主题: 内存分析


