Linux内核:内存管理——内存检测工具KASAN

KASAN 是 Kernel Address Sanitizer 的缩写,它是一个动态检测内存错误的工具,主要功能是检查内存越界访问和使用已释放的内存等问题。KASAN 集成在 Linux 内核中,随 Linux 内核代码一起发布,并由内核社区维护和发展。本文简要介绍 KASAN 的原理及使用方法。

一、KASAN的原理和使用方法

1. 如何打开KASAN功能

Kernel defconfig增加如下配置:

由于1/8的内存用于shadow memory,可用内存会减少1/8,例如8GB的内存,打开KASAN后,MemTotal约为6.72GB。

C:\Users>adb shell "cat /proc/meminfo | grep MemTotal"
MemTotal:        6723572 kB

2. KASAN原理概述

KASAN利用额外的内存标记可用内存的状态,这部分额外的内存被称作shadow memory(影子区),KASAN将1/8的内存用作shadow memory。使用特殊的magic num填充shadow memory,在每一次load/store内存的时候检测对应的shadow memory确定操作是否valid。连续8 bytes内存(8 bytes align)使用1 byte shadow memory标记。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是更全面的 Linux 内核 Debug 技术的推荐,共100个: 1. printk 2. kdb 3. kgdb 4. kdump 5. kexec 6. ftrace 7. SystemTap 8. LTTng 9. perf 10. oprofile 11. kprobes 12. dynamic-debug 13. kcov 14. kasan 15. kmemleak 16. kcsan 17. ktsan 18. kasan-runtime 19. kretprobe 20. uprobes 21. trace-cmd 22. debugfs 23. sysfs 24. procfs 25. kernelshark 26. crash 27. memtest86+ 28. valgrind 29. gdb 30. strace 31. eBPF 32. bcc 33. stapbpf 34. kpatch 35. ksplice 36. kprobes on tracepoints 37. LKDTM 38. syzkaller 39. fuzzing 40. static code analysis 41. clang analyzer 42. Coverity 43. Infer 44. sparse 45. smatch 46. coccinelle 47. gcc plugins 48. kernelbuild 49. kernelci 50. kernelci-dashboard 51. kbuild test 52. kselftest 53. kunit 54. ktest 55. kasan-tests 56. kmemleak-tests 57. kcsan-tests 58. ktsan-tests 59. kretprobe-tests 60. uprobes-tests 61. ftrace-tests 62. LTTng-tests 63. perf-tests 64. oprofile-tests 65. kprobes-tests 66. dynamic-debug-tests 67. kcov-tests 68. kasan-tests 69. kmemleak-tests 70. kcsan-tests 71. ktsan-tests 72. kasan-runtime-tests 73. kretprobe-tests 74. uprobes-tests 75. trace-cmd-tests 76. debugfs-tests 77. sysfs-tests 78. procfs-tests 79. kernelshark-tests 80. crash-tests 81. memtest86+-tests 82. valgrind-tests 83. gdb-tests 84. strace-tests 85. LKDTM-tests 86. syzkaller-tests 87. fuzzing-tests 88. static code analysis tests 89. clang analyzer tests 90. Coverity tests 91. Infer tests 92. sparse tests 93. smatch tests 94. coccinelle tests 95. gcc plugins tests 96. kpatch-tests 97. ksplice-tests 98. kernelboot 99. bootchart 100. boot validation 这些技术在 Linux 内核 Debug 中都有不同的应用和用途,可以根据具体情况选择使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值