如何通过挂载debugfs来访问内核调试信息

1. DebugFS 的作用

bugFS 的作用

  • 内核调试接口:允许内核模块或子系统在 DebugFS 中创建虚拟文件或目录,暴露调试信息。

  • 动态交互:用户可以直接读写这些文件来查看或修改内核状态(如调整日志级别、触发特定操作)。

  • 零额外工具:无需编写专用工具,只需使用 catecho 等命令即可操作。

2. 挂载 DebugFS

只有root用户才能访问debugfs中的内容

# 以 root 权限执行
mount -t debugfs none /sys/kernel/debug
  • -t debugfs:指定文件系统类型为 DebugFS。

  • none:无需物理设备,因为是虚拟文件系统。

  • /sys/kernel/debug:标准挂载点路径(也可自定义,但此路径为 Linux 约定俗成)。

  • 验证是否挂载

# 查看是否挂载成功
mount | grep debugfs
# 输出示例:none on /sys/kernel/debug type debugfs (rw,relatime)

3. 访问 DebugFS 内容

挂载后,通过 /sys/kernel/debug 访问调试信息:

示例:查看中断统计
# 查看系统中所有中断的触发次数
cat /sys/kernel/debug/interrupts
示例:调试 GPIO 引脚

若驱动支持,可通过 DebugFS 查看或操作 GPIO 状态:

# 查看 GPIO 引脚状态(假设驱动在 DebugFS 中注册了 gpio 目录)
cat /sys/kernel/debug/gpio
示例:动态调整内核参数

某些驱动允许通过 DebugFS 动态修改调试标志:

# 启用某模块的调试日志(假设模块提供了 debug_level 文件)
echo 1 > /sys/kernel/debug/my_driver/debug_level

4. 自动挂载(可选)

若需每次启动自动挂载 DebugFS,可修改 /etc/fstab

# 在 /etc/fstab 中添加一行
none /sys/kernel/debug debugfs defaults 0 0

重启后生效,或直接执行 mount -a

5. 注意事项

  • 权限限制:默认只有 root 用户可访问 DebugFS,普通用户需通过 sudo 或修改目录权限:

    chmod 755 /sys/kernel/debug

  • 安全性:DebugFS 可能暴露敏感内核信息,生产环境中建议禁用

  • 内核配置:需在内核编译时启用 DebugFS:

    CONFIG_DEBUG_FS=y  # 在 .config 文件中确认

    6. 典型使用场景

  • 驱动开发:查看设备寄存器、DMA 缓冲区状态。

  • 性能分析:统计中断频率、调度延迟。

  • 硬件调试:操作 GPIO、I2C 设备。

  • 动态追踪:结合 trace-cmd 或 perf 进行内核事件跟踪。

# 查看系统解析后的设备树引脚配置
cat /sys/kernel/debug/pinctrl/pinctrl-handles

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17301.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC环境搭建

文章目录 1.模块创建1.创建一个webapp的maven项目2.目录结构 2.代码1.HomeController.java2.home.jsp3.applicationContext.xml Spring配置文件4.spring-mvc.xml SpringMVC配置文件5.web.xml 配置中央控制器以及Spring和SpringMVC配置文件的路径6.index.jsp 3.配置Tomcat1.配置…

常见的排序算法:插入排序、选择排序、冒泡排序、快速排序

1、插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找到已排序元素中小于等于tem的元素…

Golang的容器化部署流程

# Golang的容器化部署流程 什么是容器化部署 容器化部署是将应用程序、运行环境及其依赖项打包在一起,以便可以在任何环境中快速、一致地运行的技术。它提供了更高效的资源利用、更便捷的部署和更稳定的环境。 的容器化支持 天生支持跨平台编译,使得将Go…

前缀树算法篇:前缀信息的巧妙获取

前缀树算法篇:前缀信息的巧妙获取 那么前缀树算法是一个非常常用的算法,那么在介绍我们前缀树具体的原理以及实现上,我们先来说一下我们前缀树所应用的一个场景,那么在一个字符串的数据集合当中,那么我们查询我们某个字…

tomcat html乱码

web tomcat html中文乱码 将html文件改成jsp <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%>添加 <meta charset"UTF-8">

安全测试|SSRF请求伪造

前言 SSRF漏洞是一种在未能获取服务器权限时&#xff0c;利用服务器漏洞&#xff0c;由攻击者构造请求&#xff0c;服务器端发起请求的安全漏洞&#xff0c;攻击者可以利用该漏洞诱使服务器端应用程序向攻击者选择的任意域发出HTTP请求。 很多Web应用都提供了从其他的服务器上…

【笛卡尔树】

笛卡尔树 笛卡尔树定义构建性质 习题P6453 [COCI 2008/2009 #4] PERIODNICF1913D Array CollapseP4755 Beautiful Pair[ARC186B] Typical Permutation Descriptor 笛卡尔树 定义 笛卡尔树是一种二叉树&#xff0c;每一个节点由一个键值二元组 ( k , w ) (k,w) (k,w) 构成。要…

java测试题

String str2 "he""llo" xx.java--->xx.class----->内存 在由.java文件通过javac命令变为.class文件的过程中已经自动拼接变为“hello” String str2 "he"new String"llo" 在编译为,class文件时还是两个字符串“he”和“llo”…

SQLite 数据库:优点、语法与快速入门指南

文章目录 一、引言二、SQLite 的优点 &#x1f4af;三、SQLite 的基本语法3.1 创建数据库3.2 创建表3.3 插入数据3.4 查询数据3.5 更新数据3.6 删除数据3.7 删除表 四、快速入门指南4.1 安装 SQLite4.2 创建数据库4.3 创建表4.4 插入数据4.5 查询数据4.6 更新数据4.7 删除数据4…

无人机之无线传输技术!

一、Lightbridge和OcuSync图传技术 Lightbridge技术&#xff1a;这是大疆自主研发的一种专用通信链路技术&#xff0c;使用单向图像数据传输&#xff0c;类似于电视广播塔的数据传输形式。它主要采用2.4GHz频段进行传输&#xff0c;并且可以实现几乎“零延时”的720p高清图像传…

逻辑分析仪的使用-以STM32C8T6控制SG90舵机为例

STM32C8T6控制SG90舵机 1.逻辑分析仪作用 逻辑分析仪在嵌入式开发中的作用非常重要&#xff0c;它是开发、调试和排错过程中的一个不可或缺的工具。具体来说&#xff0c;逻辑分析仪的作用包括以下几个方面&#xff1a; 1.信号捕获和分析&#xff1a; 逻辑分析仪能够实时捕获多个…

线性代数 第七讲 二次型_标准型_规范型_坐标变换_合同_正定二次型详细讲解_重难点题型总结

文章目录 1.二次型1.1 二次型、标准型、规范型、正负惯性指数、二次型的秩1.2 坐标变换1.3 合同1.4 正交变换化为标准型1.5 可逆线性变换和正交变换1.6 二次型化标准形&#xff0c;二次型化规范形的联系思考1.8 两个二次型联系的思考1.9 对于配方法问题的深入思考 2.二次型的主…

vue学习9

1.文章分类页面-element-plus表格 基本架子-PageContainer封装 按需引入的彩蛋&#xff0c;components里面的内容都会自动注册 用el-card组件&#xff0c;里面使用插槽或具名插槽 文章分类渲染 & loading处理 序号&#xff1a; <el-table-column type"index"…

Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)

本篇文章会分基于DeepSeek开放平台上的API&#xff0c;以及本地私有化部署DeepSeek R1模型两种方式来整合使用。 本地化私有部署可以参考这篇博文 全面认识了解DeepSeek利用ollama在本地部署、使用和体验deepseek-r1大模型 Spring版本选择 根据Spring官网的描述 Spring AI是一…

硬件电路(10)-二极管

一、概述 二极管是用半导体材料(硅、硒、锗等)制成的一种电子器件。它具有单向导电性能&#xff0c; 即给二极管阳极和阴极加上正向电压时&#xff0c;二极管导通。 当给阳极和阴极加上反向电压时&#xff0c;二极管截止。 因此&#xff0c;二极管的导通和截止&#xff0c;则相…

智慧农业-虫害及生长预测

有害生物防控系统是一个综合性的管理体系&#xff0c;旨在预防和控制对人类生活、生产甚至生存产生危害的生物。这些生物可能包括昆虫、动物、植物、微生物乃至病毒等。 一、系统构成 1、监测预警系统&#xff1a;利用智能传感器、无人机、遥感技术等手段&#xff0c;实时监测…

在 PyCharm 中接入deepseek的API的各种方法

在 PyCharm 中接入 DeepSeek 的 API&#xff0c;通常需要以下步骤&#xff1a; 1. 获取 DeepSeek API 密钥 首先&#xff0c;确保你已经在 DeepSeek 平台上注册并获取了 API 密钥&#xff08;API Key&#xff09;。如果没有&#xff0c;请访问 DeepSeek 的官方网站注册并申请 …

DeepSeek 助力 Vue 开发:打造丝滑的返回顶部按钮(Back to Top)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

Github自定义readme文件 个人主页简介 模版

自己写的 样式 # &#x1f44b; Hi bro , Im Dduo ! Glad to meet you &#x1f601;&#x1f60d;&#x1f61c;- &#x1f4da; Im Dduo, a student. Feel free to reach out if youd like to chat or collaborate! &#x1f60a; - &#x1f4ac; Dont hesitate to reach …

【工业安全】-CVE-2022-35561- Tenda W6路由器 栈溢出漏洞

文章目录 1.漏洞描述 2.环境搭建 3.漏洞复现 4.漏洞分析 4.1&#xff1a;代码分析 4.2&#xff1a;流量分析 5.poc代码&#xff1a; 1.漏洞描述 漏洞编号&#xff1a;CVE-2022-35561 漏洞名称&#xff1a;Tenda W6 栈溢出漏洞 威胁等级&#xff1a;高危 漏洞详情&#xff1…