码迷,mamicode.com
首页 > 其他好文 > 详细

DEBUG memory问题的一些工具以及注意事项

时间:2020-09-24 20:46:50      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:注意事项   开机   oom   注意   efault   解决   mini   使用方法   ati   

 

1. kasan

非常有用的debug工具,主要用于debug  访问越界,访问已经释放的内存,栈溢出等,能解决大多数memory问题(90%),但是依然有缺陷,比如不能debug HW操作memory造成的问题,还有一些SW造成的问题,比如process A allocate内存之后再释放,process B allocate到相同内存,此时process A再次写memory是不能被KASAN debug出来的。

kasan的使用方法也很简单,配置如下config:

CONFIG_HAVE_ARCH_KASAN=y
CONFIG_KASAN=y
# CONFIG_KASAN_OUTLINE is not set
CONFIG_KASAN_INLINE=y
CONFIG_TEST_KASAN=m

另外还有一个bootargs可以设置kasan_multi_shot=1。参考 https://lore.kernel.org/patchwork/patch/772963/

 

2. kmemleak

用于debug OOM等 allocate而未free造成内存不够用的问题,配置如下config即可使用:

CONFIG_HAVE_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=4096
# CONFIG_DEBUG_KMEMLEAK_TEST is not set
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y

使用方法:

echo scan > sys/kernel/debug/kmemleak
cat /sys/kernel/debug/kmemleak

注意:

a. bootargs中加入kmemleak=on打开kmemleak。

b. 发现 echo scan > sys/kernel/debug/kmemleak 提示 sh: echo: write error: Device or resource busy ,此时检查一下开机log中是否有如下log,

[ 0.833010] console [ttyS0] enabled
[ 0.836553] kmemleak: Early log buffer exceeded (13624), please increase DEBUG_KMEMLEAK_EARLY_LOG_SIZE
[ 0.845918] Calibrating delay loop... 2289.66 BogoMIPS (lpj=4579328)
[ 0.868323] pid_max: default: 32768 minimum: 301

这是因为log buffer太小导致enable 失败,增加config中的log_size即可。

 

3. debug_slub

 

DEBUG memory问题的一些工具以及注意事项

标签:注意事项   开机   oom   注意   efault   解决   mini   使用方法   ati   

原文地址:https://www.cnblogs.com/smilingsusu/p/13714404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!