调试文件系统——debugfs
最编程
2024-08-13 21:29:06
...
概述
DebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据。类似的虚拟文件系统还有procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上,而是Linux内核运行起来后才建立起来。
通常情况下,最常用的内核调试手段是printk。但printk并不是所有情况都好用,比如打印的数据可能过多,我们真正关心的数据在大量的输出里不是那么一目了然;或者我们在调试时可能需要修改某些内核变量,这种情况下printk就无能为力,而如果为了修改某个值重新编译内核或者驱动又过于低效,此时就需要一个临时的文件系统可以把我们需要关心的数据映射到用户空间。
在过去,procfs可以实现这个目的,到了2.6时代,新引入的sysfs也同样可以实现,但不论是procfs或是sysfs,用它们来实现某些debug的需求,似乎偏离了它们创建的本意。比如procfs,其目的是反映进程的状态信息;而sysfs主要用于Linux设备模型。不论是procfs或是sysfs的接口应该保持相对稳定,因为用户态程序很可能会依赖它们。当然,如果我们只是临时借用procfs或者sysfs来作debug之用,在代码发布之前将相关调试代码删除也无不可。但如果相关的调试借口要在相当长的一段时间内存在于内核之中,就不太适合放在procfs和sysfs里了。
故此,debugfs应运而生。
挂载debugfs
mount -t debugfs none /sys/kernel/debug
mount -t debugfs none /sys/kernel/debug
推荐阅读
-
Linux] 内存文件系统 I/O、重定向内存文件系统 I/O、重定向
-
[Linux] 逐层了解文件系统 - (3) 存储文件的磁盘组织结构
-
[Linux] 逐层了解文件系统 (1) - 操作文件的进程
-
JavaScript 第 16 章:错误处理和调试
-
IOS APP 初学者经验 - 第 1 课:如何在 Mac 中进行实际调试
-
AOT 漫谈主题(第一部分):如何调试 C# AOT 程序 - I:背景
-
Qt/C++编写的mqtt调试助手使用说明--二、特点
-
Adb 侧调试器
-
消除奇怪的前端错误:1 比特损失导致音频/视频播放时间无限增长 - Http 分路传输的核心分析和坑洞 - 调试程序
-
在 pycharm 中调试时如何查看数据的维度