过去一周,我正在开发一个简单的内核模块,该模块创建一个字符设备驱动程序,允许在用户和内核空间之间传递消息。
一切都很好,我找到了 KEDR(https://github.com/euspectre/kedr),我现在可以检测内存泄漏。
但问题是:有没有办法检测越界访问以及任何其他错误,例如未初始化内存ETC?在用户空间程序中,我们有时可能会看到段错误,或者我们可以使用瓦尔格林德尝试检测大部分错误。
我尝试人为地写入数组的边界之外,并且操作系统没有抱怨。
答案1
卡桑与 非常接近memcheck
,这就是您所说的意思valgrind
。
这是内核地址清理器[LWN.net 2014]。也可以看看基于软件标签的 KASAN[LWN.net 2018]。