首页 > 系统相关 >linux驱动代码调试

linux驱动代码调试

时间:2022-09-22 23:58:17浏览次数:61  
标签:调用 代码 ioctl 内核 linux 驱动 proc 调试

1. printk

2. cat /dev/faulty

3.strace  eg:strace ls /dev > /dev/scull0

-t 来显示每个调用执行的时间,

-T 来显示调用中花费的时间,

-e 来限制被跟踪调用的类型(例如strace –eread,write ls表示只监控read和write调用),

以及-o 来重定向输出到一个文件。缺省情况下,strace 打印调用信息到 stderr

4. 利用内核内置的hacking选项

5. 利用ioctl方法

由于驱动中的ioctl函数可以将驱动的一些信息返回给用户程序,也可以让用户程序通过ioctl系统调用设置一些驱动的参数。

所以在驱动的开发过程中,可以扩展一些ioctl的命令用于传递和设置调试驱动时所需各种信息和参数,以达到调试驱动的目的

6. 利用/proc 文件系统

/proc文件系统用于内核向用户空间暴露一些内核的信息。因此出于调试的目的,我们可以在驱动代码中增加向/proc文件系统导出有助于监视驱动的信息的代码。

这样一来,我们就可以通过查看/proc中的相关信息来监视和调试驱动

 使用kgdb

 kgdb是在内核源码中打用于调试内核的补丁,然后通过相应的硬件和软件,就可以像gdb单步调试应用程序一样来调试内核(当然包括驱动)

标签:调用,代码,ioctl,内核,linux,驱动,proc,调试
From: https://www.cnblogs.com/xpylovely/p/16721247.html

相关文章

  • Linux exit 命令
    Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与......
  • Linux下.NET Core进程守护设置,解决SSH关闭后.NET Core服务无法访问的问题
    Linux下.NETCore进程守护设置,解决SSH关闭后.NETCore服务无法访问的问题 通过dotnet命令启动的程序,会在控制台关闭时结束进程,因此需要设置守护进程。这样可以让应用程......
  • 第一章Linux基本介绍
    基本介绍LIunx的文件系统是采用层式的树状目录结构,在此结构中的是最上层是根目录/,然后在次目录下在创建其他目录。在Liunx世界里,一切皆为文件树状目录结构:具体目录......
  • GEO代码分析流程 - 8. 标准流程的后续 - string + Cytoscape
    蛋白互作网络图-网页工具string输入数据:差异基因输出:一个ppi图,可以导出数据放入Cytoscape进行网络可视化制作string的输入数据load("step4output.Rdata")gene_u......
  • JS注意事项 && 代码调试
    JavaScript识别七种基本(不可变)数据类型:Boolean、Null、Undefined、Number、String、Symbol(ES6新增)和BigInt(ES2020新增),以及一种可变项类型:Object。注意,在JavaScript中,数组严......
  • 一起浅浅认识 Linux 系统
    Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。这就是最基本的操作系统。并且Linux系统说复杂也不复杂,说简单也不简单,关键是要用心去感受。所以这次我们......
  • Linux+Wine玩GTA5指南
    如果你的系统没有Wine先装Wine和winetricks,Wine在各大发行版的源都能找到。记住32位和64位的Wine都要装 安装wget后,输入指令sudo-scd/optmkdirwine-3.7-staging ......
  • day03-代码实现02
    多用户即时通讯系统034.编码实现024.2功能实现-拉取在线用户4.2.1思路分析客户端想要知道在线用户列表,就要向服务器发送请求(Message),因为只有服务器端保持着所有与客......
  • 第二章-新手必须掌握的Linux命令
    1.强大好用的shell计算机硬件是由运算器、控制器、存储器、输入、输出设备等共同组成,系统内核让各种硬件设备各司其职及协同运行。shell是一个命令行工具(也称终端或壳)充......
  • linux操作命令
    Linux系统操作命令linux下命令行下载数据wget--userusename--passwordpassworddata_urlvim下删除多行步骤1:vimfile步骤2::setnu显示行号步骤3::起始行号,末尾......