我是靠谱客的博主 迅速泥猴桃,最近开发中收集的这篇文章主要介绍内核地址消毒剂(KASAN),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

概述
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)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部