Linux 内核开发者调试建议

通用指南

子系统特定指南

通用调试建议

根据问题的不同,可以使用不同的工具集来追踪问题,甚至可以了解是否一开始就存在问题。

第一步,您必须弄清楚您要调试哪种类型的问题。根据答案,您的方法和工具选择可能会有所不同。

我需要在受限访问下进行调试吗?

您对机器的访问权限是否受限,或者您是否无法停止正在运行的执行?

在这种情况下,您的调试能力取决于所提供发行版内核的内置调试支持。《用户空间调试建议》简要概述了这种情况下一系列可能的调试工具。在大多数情况下,您可以通过查看 /boot 目录中的配置文件来检查内核的功能。

我拥有系统的 root 访问权限吗?

您是否可以轻松地更换有问题的模块或安装新的内核?

在这种情况下,您可用的工具范围会大得多,您可以在《驱动程序开发调试建议》中找到这些工具。

时序是因素吗?

了解您要调试的问题是否始终如一地出现(即,给定一组输入,您始终会得到相同的不正确输出),还是不一致地出现,这一点很重要。如果它不一致地出现,则可能存在一些时序因素。如果在代码中插入延迟会改变行为,那么很可能时序是一个因素。

当时间确实改变了代码执行的结果时,使用简单的printk()进行调试可能不起作用,一个类似的替代方法是使用trace_printk(),它将调试消息记录到跟踪文件而不是内核日志。

版权所有 ©2024 : Collabora