免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10605 | 回复: 12
打印 上一主题 下一主题

求:内核态下内存泄露检测工具 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-04 16:33 |只看该作者 |倒序浏览
linux用户态下用于内存调试、检测内存泄露的工具有很多,比如常用的valgrind等,但是在linux内核态下写驱动,写模块也经常会出现内存的各种问题,而且在内核态下调试可能更为麻烦一些,那么为什么没听说过内核态下有类似的内存调试工具呢。。。

   但是目前自己需要这样的一种工具用于平时使用,不知道有没有哪些 开源的 or 商用的 or 自己开发的 ,用于内核态下内存泄露检测的工具可供参考,小弟在此先谢过了~~~

论坛徽章:
0
2 [报告]
发表于 2011-07-04 16:35 |只看该作者
当然,内存泄露的检测只是一方面,内核态下经常会发生的 踩内存 现象,比如破坏了系统堆栈等,也是需要解决的一个重点内容。

论坛徽章:
0
3 [报告]
发表于 2011-07-05 09:43 |只看该作者
没有哪位大牛能给点意见吗。。。

论坛徽章:
0
4 [报告]
发表于 2011-07-05 14:49 |只看该作者
linux用户态下用于内存调试、检测内存泄露的工具有很多,比如常用的valgrind等,但是在linux内核态下写驱动 ...
luoyan_xy 发表于 2011-07-04 16:33



    内核内置许多内存泄漏检测,比如slab debug可以在make menuconfig下面的kernel hacking里找

论坛徽章:
0
5 [报告]
发表于 2011-07-05 16:55 |只看该作者
slab debug貌似只能针对通过slab分配的内存,如果通过kmalloc或vmalloc分配的内存应该就不能起作用了吧。

  现在在网上搜到了一个 kmemcheck,也已经包含在内核,正在研究,不知道效果如何,有没有使用过的交流下经验

论坛徽章:
0
6 [报告]
发表于 2011-07-05 22:02 |只看该作者
slab debug貌似只能针对通过slab分配的内存,如果通过kmalloc或vmalloc分配的内存应该就不能起作用了吧。
...
luoyan_xy 发表于 2011-07-05 16:55



    kmalloc在小于4k的时候也是走的slub,内核态很少用vmalloc,主要是buddy和slub的内存泄露

论坛徽章:
0
7 [报告]
发表于 2011-07-06 10:05 |只看该作者
回复 6# unbutun


    这个内存泄露的检测算一方面,另外一个问题:内核模块中临时变量的越界访问容易破坏到内核堆栈返回值esp、ebp寄存器的值,那么对于这种情况有没有什么比较好的检测方法。

   像昨天看到的kmemcheck也不能支持栈地址的检测。

论坛徽章:
0
8 [报告]
发表于 2011-07-06 13:18 |只看该作者
回复 6# unbutun


    就算kmalloc大于4k,也走slab,你可以通过cat /proc/slabinfo来验证,如果实在不确定可以通过源码验证,kmalloc是基于slab接口上的应用,兄弟,如果你的回答不太确定的话,至少给个准确度,要严谨啊,千万不能误导别人啊

论坛徽章:
0
9 [报告]
发表于 2011-07-06 19:52 |只看该作者
回复 8# chenrvmldd


首先请看清是小于

其次,请看下内核代码:

static __always_inline void *kmalloc(size_t size, gfp_t flags)
{
        if (__builtin_constant_p(size)) {
                if (size > PAGE_SIZE)
                        return kmalloc_large(size, flags);

                if (!(flags & SLUB_DMA)) {
                        struct kmem_cache *s = kmalloc_slab(size);

                        if (!s)
                                return ZERO_SIZE_PTR;

                        return kmem_cache_alloc(s, flags);
                }
        }
        return __kmalloc(size, flags);
}

最基本的东西

不知道你上面的话的依据是什么?

论坛徽章:
0
10 [报告]
发表于 2011-07-06 19:54 |只看该作者
回复 7# luoyan_xy


    好像gcc有个功能可以检测栈溢出,具体忘了叫什么,曾经在ibm的那个网站上见过,你查查
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP