Linux设备驱动程序调试方法

本文由用户“kelly1209”分享发布 更新时间:2020-02-29 12:50:31 举报文档

以下为《Linux设备驱动程序调试方法》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

Linux 设备驱动程序调试方法 国防科技大学 计*** 张某某 由于设备驱动程序运行于内核空间,因此有着与用户空间程序不同的调试方法。 1.1 简介 设备驱动程序的调试需要内核的支持,因此通常应该根据需要对内核进行重编译。下面 以 2.6.11 版的 Linux 内核为例进行介绍,其他版本的内核编译方法与此类似。 1. 进入编译选项配置界面。 (1)如果不清楚当前正在运行的内核源代码的目录,可以通过如下方法查看。 (2)进入内核源代码所在目录,通过 make menuconfig 命令进入编译选项配置环境, 如图 1.1 所示。 调试内核 图 1.1 编译选项配置环境 在选项配置环境中每个选项有“*”(编译进内核)、“M”(以模块方式编译)和“”(不 编译)三种状态,可以分别使用“Y”、“M”和“N”键来设置。 2.配置编译选项 如图 1.2 所示,在 Kernel hacking 下有很多选项,分别对应不同的内核调试功能。 图 1.2 内核调试选项 其中需要注意的有如下几点。 (1)Kernel debugging 选项(对应于 CONFIG_DEBUG_KERNEL)应设为“*”,只有 把该选项选为“*”,才能够使其他内核调试选项可见。 (2)使用 gdb 调试内核需要在编译内核的时候应选中 Compile the kernel with debug info 选项(CONFIG_DEBUG_INFO),否则 gdb 将无法对内核符号进行解析。(?是这样吗) (2)Spinlock debugging 选项(对应于 CONFIG_DEBUG_SPINLOCK)应设为“*”, 这样系统将检查到例如对没有初始化的 spinlock 的操作、对同一个锁解锁多次等类似错误。 (3)Sleep-inside-spinlock checking 选项(对应于 CONFIG_DEBUG_SPINLOC_SLEEP) 通常可不选。选中该选项将使系统检查到占有 spinlock 的进程进入 sleep 状态的错误,但是系 统在进程只是有可能 sleep 的情况下也会发出警告,从而可能在正常情况下产生大量无用信 息。在使用 VMware 虚拟机的时候这种现象尤为明显。 (4)Kprobes 选项(对应于 CONFIG_KPROBES)通常可不选。该选项的作用是使人们 能够通过 register_kprobe()函数在内核中适当的位置设置自定义的回调函数。但是选中该选项 将会定义一个和 kdb 中同名的函数(用于产生 int3 中断),造成冲突。如果希望使用 kdb,则 不应选中 Kprobes 选项。 (5)如果打了 kdb 的 patch,那么在最后将会有 Built-in Kernel Debugger support 选项, 我们将在 1.8 节“使用 kdb”中进行介绍。 (6)在顶层选项的 Loadable module support 中只有选中 Module versioning support 选项, 才能够为模块添加版本支持机制。(通常可以不选)。 设置完成后保存并退出编译选项配置环境,通过 make install 命令编译内核。(或者使用 make bzImage,make modules,make modules_install,make install)。编译完成后即可对内核进 行调试了。 1.2 使用 printk() 1.2.1 简介 通常认为真正的高手和初学者都只使用 printk()来调试内核。从某种程度上说,pri 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 ces 指针的地址,cf3a2bf8 为内容,也就是设备的地址。 餷 第 1 行表示第 1 个 quantum_qset 在 c7e6d888。 餷 第 2 行表示 quantum size 为 0xfa0,即 4000。 餷 第 3 行表示 current array size 为 0x3e8,即 1000。 餷 第 4 行表示设备当前存储的总字节数为 0x50。 (5)修改数据。 作用是修改了当前的总字节数,使拷贝的总字节数减少。 (6)查看结果。 使用 go 命令继续执行,拷贝完毕后使用 ls -l 查看拷贝的 scull_2.h 文件,可以发现只有 16(0x10)个字节大小。 [文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。

  1. 02写作强化20大必背范文-英语二
  2. 最XX师大高中英语必修模块三生词表(带音标)
  3. 文化常识英语选择题
  4. 英文完型总结
  5. Uite 6 Section A 教案
  6. 《市场营销专业英语》课程 题目星巴克文化策略
  7. Cooling Relief of Acute and Chronic Itch Requires
  8. 教案
  9. 走遍美国 听力练习1.1
  10. 唐代著作郎官述论
  11. 1.2 Tickets Please
  12. Linux设备驱动程序调试方法
  13. Linux下C应用程序开发

以上为《Linux设备驱动程序调试方法》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览