内核模块调试常用命令整理

news2024/9/26 1:26:43

一、 模块加载

1.1 最简单的一个驱动

static int __init my_driver_init( void )
{
    printk("init my_driver\n");
    return 0;
}

static void __exit my_driver_exit( void )
{
    printk("exit my_driver\n");
}

module_init( my_driver_init );
module_exit( my_driver_exit );
MODULE_LICENSE("GPL");
MODULE_AUTHOR("fatfat");

当通过insmod 或者modprobe 命令加载内核模块时,模块的加载函数就会自动被内核执行(my_driver_init )。

1.2 insmod

insmod 是最简单的将一个模块加载到内核的办法。前提是模块不依赖于其他模块。

insmod hello_drv.ko

1.3 modprobe

modprobe 在将模块加载进内核之前,先检查模块之间的依赖关系,并且按照顺序加载这些依赖。

modprobe hello_drv.ko 

二、 模块依赖

2.1 生成依赖文件

depmod 会生成当前安装目录下模块的依赖关系文件module.dep 。modprobe 读取依赖文件 module.dep ,并加载相关的依赖.

在 ”/lib/modules/内核版本” (/lib/modules/4.1.15)目录下,执行下面命令,生成依赖文件。

depmod -a

2.2 查看依赖文件

我们打开module.dep 文件,可以查看当前目录下模块的依赖文件。
在这里插入图片描述

三、模块卸载

当执行rmmod 命令,模块卸载函数(my_driver_exit )就会自动被内核执行,完成相关清理工作。

rmmod hello_drv.ko

四、列出系统的模块

4.1 lsmod

lsmod 列出当前已经加载到内核中的所有模块。

其原理就是将/proc/modules 中的信息调整一下格式输出。lsmod 输出列表中有一列 Used by ,它表明此模块正在被其他模块使用,显示了模块之间的依赖关系。
在这里插入图片描述

4.2 /sys/module 目录

该目录下有系统中所有的模块信息,不论这些模块是以内联(inlined) 方式 编译到内核镜像文件中,还是编译为外部模块(.ko) 。

当我们加载驱动程序之后,我们可以通过 调用 lsmod 命令 或者查看 /sys/module 目录,查看我们刚加载的模块有没加载成功。

五、查看模块的信息

modinfo 命令用于显示指定的内核模块信息。

modinfo hello_drv.ko

如下输出可见,命令可以输出内核模块的外部依赖、编译内核版本,作者等等信息。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Xamarin.Forsm for Android 显示 PDF

背景 某些情况下,需要让用户阅读下发的文件,特别是红头文件,这些文件一般都是使用PDF格式下发,这种文件有很重要的一点就是不能更改。这时候就需要使用原文件进行展示。 Xamarin.Forms Android 中的 WebView 控件是不能直接显示的…

R统计绘图-NMDS、环境因子拟合(线性和非线性)、多元统计(adonis2和ANOSIM)及绘图(双因素自定义图例)

这个推文也在电脑里待了快一年了,拖延症患者,今天终于把它发出来了。NMDS分析过程已经R统计-PCA/PCoA/db-RDA/NMDS/CA/CCA/DCA等排序分析教程中写过了。最近又重新看了《Numerical Ecology with R》一书,巩固一下知识,正好重新整理了一下发出…

火山引擎推出一站式小程序监控方案

背景 小程序作为轻量级的应用发展迅速,国内已有多家小程序厂商相继推出。为了洞察用户真实体验及程序自身运行状况,监控已成为开发套件中必不可少的一环。随着业务愈来愈复杂,各厂商小程序管理后台免费提供的监控能力逐渐满足不了大部分业务…

软考中级之数据库系统(重点)

涉及考点:数据库模式,ER模型,关系代数与元祖演算,规范化理论,并发控制,分布式数据库系统,数据仓库和数据挖掘 数据库模式 三级模式-二级映射 常考选择题 三级模式,两种映射的这种涉及属于层次架构体的设计,这种设计为我们在应用数据库的时候提供了很多便利,同时提高了整个体…

功能性材料深入超级赛道,赋能多行业迭代升级

中国国际胶粘剂及密封剂展览会深耕胶粘剂、密封剂和胶粘带行业26年,是行业认可的、优质的贸易与技术交流平台。展会连接了十几个行业的买家和卖家,包括汽车、电子、新能源、轨道交通、工业等重要领域,为客户提供封装、粘合、散热、装配制造等…

拿下宁王、迪王的湖南裕能,还能“狂飙”多远?

文|智能相对论作者|Kinki近日,磷酸铁锂正极材料龙头湖南裕能正式登陆A股,上市当天市值超过了400亿元,投资者中一签可赚1.49万元,可谓近年低迷的资本市场中一支“大肉签”。不过在 “开门红”之后,湖南裕能的股价便一路…

leetcode16. 最接近的三数之和

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums [-1,2,1,-4], target 1 输出:2 …

linux服务器上Docker中安装jenkins

前言 Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。 本文主要提供通过docker安装jenkins镜像,并配置nginx反向代理页面配置和使用。通过jenkins完成项目的自动部署。 我在安装之前…

ThinkPHP ^6图片操作进阶

图片裁剪、缩略、水印不再是TP框架系统内置的功能,需要安装。 目录 安装 图片处理 1.创建图片对象 2.获取图片属性 3.裁剪图像 4.生成缩略图 6.保存图像 7.水印 安装 使用composer在项目根目录打开命令行执行: composer require topthink/think…

Simulink 电机控制:单电阻三相电流重构算法仿真总结

目录 理论基础 仿真实现 硬件实现 总结 理论基础 参考Microchip AN1299 《PMSM 无传感器 FOC的单分流三相电流重构算法》,详细的理论可以参考这个文档,这里只简单总结一下。单电阻采样的核心就是要在一个周期内实现两相电流的采样并通过基尔霍夫定…

【UE4 制作自己的载具】3-载具蓝图实现(基本)

效果步骤新建一个蓝图,继承“WheeledVehicle(轮式载具)”命名为“Vehicle_BP”,双击打开该蓝图选中“Mesh(继承)”,然后在细节中,骨架网格体选择“Vehicle”添加一个弹簧臂和摄像机组…

Windows下mysql8.0.32安装配置方法图文教程

Windows下mysql8.0.31安装配置方法图文教程 1、下载可以到官网的地址下载即可 https://dev.mysql.com/downloads/file/?id516465 2、解压缩并重命名mysql-8.0.32-winx64为mysql 3、创建my.ini配置文件,创建data文件夹。 4、打开记事本另存为my.ini并且使用ANSI编…

23年了,GOPATH和go.mod 还在冲突!

现在 新配了 go环境 设置了GOROOT,GOPATH ,发现引用别的包会出问题。一直会报 package XX not in GOROOT (xxxx)我的目录:我的开发目录: /home/fate/go_projects/老样子,下面有 /home/fate/go_…

元宇宙与ChatGPT结合 一场颠覆式场景革命或将到来?

元宇宙和ChatGPT都是当前数字化领域中非常热门的技术和应用,两者之间也存在一定的关系,结合起来,可以为企业提供更加智能化、个性化的服务和支持,同时也可以拓展企业的市场和品牌影响力,提高企业的效率和创新能力。 元…

公司新来一00后说我不会自动化测试,3个问题直接给他问趴下...

今天我们公司刚入职一小伙,听说是00后,今天在办公室交流了一下,他问我会不会自动化测试,我直呼好家伙,直接问了他3个开展自动化测试问题....一问3不知.....还有待加强呀我们在制定自动化测试实施策略时,首先…

java servlet详解

一、Servlet实现方式 1、实现Servlet接口,接口中的方法必须全部实现。此种方式支持最大程度的自定义。 2、继承GenericServlet,service方法必须重写,其他方可根据需求,选择性重写。 使用此种方式,表示只在接收和响应…

作为通信人,你知道国内有哪些通信领域的博物馆吗?

众所周知,博物馆是收藏、展示和研究历史文物的地方。参观博物馆,既可以回顾历史往事,也可以学习知识。 那么,作为通信人,你知道国内有哪些通信领域的博物馆吗? 今天,就让小编给大家介绍介绍。█…

微鳄365,可私有化部署的企业管理软件,让数据更安全让管理更方便

编者按:本文分析了企业数字化转型中常遇到的一些困难,并进一步指出微鳄365一体化解决方案,可以帮助企业克服这些困难。关键词:免安装,免维护,成本低,数据安全,共享协作,个…

利用STM32的LR寄存器调试HardFault错误

R14 or LR(Link Register) HardFault调试的思路 先在出错误的地方打断点,让程序的状态固定下来;由于HardFault属于异常,所以出现HardFault后,LR的值一定是0xFFFFFFFx,这样就可以根据其值,判断程序进入这个…

C++学习记录——십일 string类模拟实现

这篇对于string类的实现会一步步来,从错误到正确,尽量展现可能会忽略掉的细节. 文章目录1、初始化列表2、拷贝构造函数和赋值函数3、循环输出,迭代器4、插入删除等5、流插入流提取6、其它接口1、初始化列表 先写下来这些代码 String.h #pra…