更新时间:2021-07-08 GMT+08:00
分享

memused

命令功能

memused命令用于查看当前系统used节点中保存的函数调用栈LR信息。通过分析数据可检测内存泄露问题。

命令格式

memused

使用指南

通过make menuconfig打开内存泄漏检测。
  • 目前只有bestfit内存管理算法支持该功能,需要使能LOSCFG_KERNEL_MEM_BESTFIT。
    Kernel ---> Memory Management ---> Dynamic Memory Management Algorithm ---> bestfit
  • 该命令依赖于LOSCFG_MEM_LEAKCHECK,可以在菜单项中开启“Enable Function call stack of Mem operation recorded”:
    Debug  ---> Enable a Debug Version ---> Enable MEM Debug ---> Enable Function call stack of Mem operation recorded

    开启该菜单项后,会在内存操作时,将函数调用关系LR记录到内存节点中,若相同调用栈的内存节点随时间增长而不断增多,则可能存在内存泄露,通过LR可以追溯内存申请的位置。重点关注LR重复的节点。

    此配置打开时,会影响内存占用和内存操作性能,因此仅在检测内存泄露问题时打开。

使用实例

举例:

输入memused。

输出说明

Huawei LiteOS # memused
node         LR[0]       LR[1]       LR[2]
0x802d79e4:  0x8011d740  0x8011a990  0x00000000
0x802daa0c:  0x8011d5ec  0x8011d740  0x8011a990
0x802dca28:  0x8006e6f4  0x8006e824  0x8011d5ec
0x802e2a48:  0x8014daac  0x8014db4c  0x800f6da0
0x802e8a68:  0x8011d274  0x8011d654  0x8011d740
0x802e8a94:  0x8014daac  0x8014db4c  0x8011d494
0x802eeab4:  0x8011d4e0  0x8011d658  0x8011d740
0x802f4ad4:  0x8015326c  0x80152a20  0x800702bc
0x802f4b48:  0x8015326c  0x80152a20  0x800702bc
0x802f4bac:  0x801504d8  0x801505d8  0x80150834
0x802f4c08:  0x801504d8  0x801505d8  0x80150834
0x802f4c74:  0x801504d8  0x801505d8  0x80150834
0x802f4e08:  0x801504d8  0x801505d8  0x80150834
0x802f4e60:  0x801030e8  0x801504d8  0x801505d8
0x802f4e88:  0x80103114  0x801504d8  0x801505d8
0x802f4eb4:  0x801504d8  0x801505d8  0x80150834
0x802f4f7c:  0x801504d8  0x801505d8  0x80150834
0x802f5044:  0x801504d8  0x801505d8  0x80150834
0x802f510c:  0x800702bc  0x80118f24  0x00000000

相关文档