暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linu中SLUB的调试 [一]

术道经纬 2021-07-07
1058

SLUB分配器于内核2.6.23版本取代SLAB分配器,成为Linux系统默认的内核object层的分配器。但它还是保持了和SLAB的兼容,因此两者都统称为"slab",本文将通过大小写的不同来区分这两个概念。

如果使用"make defconfig"配置,那么"CONFIG_SLUB_DEBUG"选项默认是打开的。但"CONFIG_SLUB_DEBUG_ON"选择则默认是关闭的(以RedHat官方的"4.18.0-80.el8.x86_64"为例,即便是debug版本的内核这一项也是关闭的)。


【启动时开启debug】


因此,要么重新配置并编译内核(通常更麻烦),要么在内核的启动参数中加上"slub_debug",比如:

grubby --args="slub_debug" --update-kernel boot/vmlinuz-4.18.0-80.el8.x86_64

这样系统启动后,通过SLUB获取到的object才具有debug信息。但不管怎么说,还是因为SLUB分配器在设计上就考虑了debug的需求,才使得我们可以相对方便地对其展开调试,这是相比之前的SLAB一个较大的进步。


使能所有SLUB的debug信息将占据相当的内存空间,在调试的时候,通常是找出可疑的SLUB,然后单独打开该SLUB的debug功能:

slub_debug=<Debug-Options>,<slab name>
文章转载自术道经纬,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论