我对Linux中的设备驱动程序很陌生。我的第一天任务是在Linux中使用GDB调试驱动程序。
我已经安装了带有补丁文件和insmod命令的驱动程序。
该设备正在正常工作,。但是没有任何解决方案来调试设备驱动程序。
我只知道如何在Linux(fedora20)中使用GDB调试C程序。我得到了一个类似于我的问题的链接,但也没有任何知识。
请大家分享你的想法,,如何从零开始,。我非常具体地了解有关在Linux中调试设备驱动程序的知识。特别是我的驱动程序中的init、或探测函数,我需要知道流程。
发布于 2017-12-14 10:07:54
发布于 2017-12-19 17:30:43
首先,您可能需要了解linux中设备驱动程序和内核的基本知识。随后,根据手边司机的类型集中注意力.您还需要了解正在使用的设备的功能(规范/手动/数据表)。
调试的基本方法可以是使用printk。通常,可以通过编译标志启用调试日志。如果它是存在的,那么启用它,以便它能够给出重要的指针,否则您可能需要自己添加它。
从验证驱动程序注册和验证您的驱动程序的加载开始(根据您的需求,静态或可加载模块)。检查它是否被列为sysfs或proc的一部分。检查探测是否成功,并随后根据驱动程序/设备功能进行适当的读/写/打开/关闭/其他调用。
dmesg对于查看内核消息非常有帮助。还有一些工具,如kdb、LTT、strace,可以根据场景使用。
https://stackoverflow.com/questions/47810552
复制相似问题