6.5.3. 调试指南

6.5.3.1. 调试开关

6.5.3.1.1. MPP调试

MPP调试log等级分为ERROR, WARNING, INFO, DEBUG, VERBOSE。通过LOGL_DEFAULT定义MPP全局的log等级。 默认log等级为INFO。

源文件路径:aic-mpp/base/log.h

enum log_level {
    LOGL_ERROR = 0,
    LOGL_WARNING,
    LOGL_INFO,
    LOGL_DEBUG,
    LOGL_VERBOSE,

    LOGL_COUNT,

    LOGL_DEFAULT = LOGL_INFO,
    LOGL_FORCE_DEBUG = 0x10,
};

6.5.3.1.2. 子模块调试

打开子模块调试log方式,在子模块中添加:

#define LOG_DEBUG

6.5.3.1.3. MPP Heap 调试

打开 MPP Heap 调试开关,可查看 MPP 中间件对预留内存的使用情况。

参考快速入门 - 编译概述 - Kernel配置,进入 kernel 的功能配置,按如下选择:

Linux
    Memory Management options  --->
        [*]   MPP debugfs interface

系统启动后挂载 debugfs

mount -t debugfs none /sys/kernel/debug/

通过查看 mpp 目录下的节点,即可获取 mpp heap 的内存使用情况

# cd /sys/kernel/dedbug/mpp/
# ls
bitmap    count     maxchunk  used
# cat count
2048
# cat used
600
# cat maxchunk
1448
# cat bitmap
4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295
4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 16777215 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  • count : MPP Heap 中包含的 page 总数

  • used : MPP Heap 中已被申请的 page 总数

  • maxchunk : MPP Heap 中还能申请到最大的连续 page 总数

  • bitmap : MPP Heap 中记录 page 状态的 bitmap

一个 page 大小为 4K , bitmap 节点打印输出十进制数据。

4294967295 转换为十六进制为 0xFFFFFFFF , 二进制为 0b11111111111111111111111111111111 。 一个 bit 表示一个 page 的状态,1 表示已被申请,0 表示空闲。4294967295 表示 32 个 page 全部被占用,总共 32 * 4K 大小。

小技巧

实际调试时要注意大小端问题。