调试指南
MPP 调试
MPP 调试 log 等级分为 ERROR, WARNING, INFO, DEBUG, VERBOSE。通过 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, };
enum log_level {
MPP_LOG_ERROR = 3,
MPP_LOG_WARNING,
MPP_LOG_INFO,
MPP_LOG_DEBUG,
MPP_LOG_VERBOSE
};
子模块调试
打开子模块调试 log 方式,在子模块中添加:
#define LOG_DEBUG
MPP Heap 调试
打开 MPP Heap 调试开关,可查看 MPP 中间件对预留内存的使用情况。
在 luban 根目录下执行 make kernel-menuconfig,进入 kernel
的功能配置,按如下选择:
LinuxMemoryManagementoptions--->[*]MPPdebugfsinterface
系统启动后挂载
debugfs
mount-tdebugfsnone/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 大小。
注:
实际调试时要注意大小端问题。