概述
概述
KernelAddressSANitizer(KASAN)是动态内存错误检测器。它提供了一种快速而全面的解决方案,用于查找无用后使用和越界错误。
KASAN使用编译时工具来检查每个内存访问,因此您将需要GCC 4.9.2或更高版本。需要GCC 5.0或更高版本才能检测对堆栈或全局变量的越界访问。
当前,仅x86_64和arm64体系结构支持KASAN。
用法
要启用KASAN,请使用以下命令配置内核:
CONFIG_KASAN = y
并在CONFIG_KASAN_OUTLINE和CONFIG_KASAN_INLINE之间选择。Outline和inline是编译器检测类型。前者产生较小的二进制文件,而后者则快1.1-2倍。内联检测需要GCC 5.0或更高版本。
KASAN可与SLUB和SLAB内存分配器一起使用。为了更好地检测错误并更好地报告,请启用CONFIG_STACKTRACE。
要禁用对特定文件或目录的检测,请在相应的内核Makefile中添加类似于以下内容的行:
对于单个文件(例如main.o):
KASAN_SANITIZE_main.o:= n
对于一个目录中的所有文件:
KASAN_SANITIZE:= n
错误报告
典型的越界访问报告如下所示:
========================================
最后
以上就是迅速泥猴桃为你收集整理的内核地址消毒剂(KASAN)的全部内容,希望文章能够帮你解决内核地址消毒剂(KASAN)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复