自学内容网 自学内容网

【内存泄漏】<kernel 工具>

  • CONFIG_DEBUG_PAGEALLOC

在释放时,全部内存页从内核地址空间中移除。该选项将大大降低运行速度,但可以快速定位特定的内存损坏错误的所在位置。

  • CONFIG_DEBUG_SPINLOCK

内核将捕获自旋锁的错误操作,比如操作未初始化自旋锁、两次解开同一锁的操作等其他错误。

  • CONFIG_DEBUG_ATOMIC_SLEEP

该选项将会检查拥有原子锁的休眠企图

  • CONFIG_DEBUG_INFO

该选项将使内核的构造包含完整的调试信息。如果读者打算用gdb调试内核,将需要这些信息,还需要打开CONFIG_FRAME_POINTER。

  • CONFIG_DEBUG_STACKOVERFLOW
  • CONFIG_DEBUG_STACK_USAGE

这些选项帮助跟踪内核栈溢出问题。栈溢出的确切信号是不包含任何合理的反向跟踪信息的oops清单。第一个选项将在内核中增加明确的溢出检查;第二个选项将让内核监视栈的使用(打印最大栈深度),并通过sysrq按键输出一些统计信息。

  • CONFIG_DEBUG_KMEMLEAK

kmemleak是内核提供的一种检测内存泄露工具,启动一个内核线程扫描内存,每隔一定时间扫描内存(默认10分钟),并打印发现新的未引用对象数量。

CONFIG_HAVE_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=16000
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y---关闭此选项,则不需要在命令行添加kmemleak=on

使用方法:

立即触发保存扫描结果
echo scan > /sys/kernel/debug/kmemleak
显示可能的 内存泄漏的详细信息,需要先挂载debugfs文件系统:
mount -t debugfs nodev /sys/kernel/debug
cat /sys/kernel/debug/kmemleak

原文地址:https://blog.csdn.net/luoye_369/article/details/142629877

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!