Skip to main content
使用以下方法了解调试内核方式的高层分类,并利用 Qualcomm® Linux 内核固有的调试特性报告发现的问题。 有关调试的更多信息,请参阅 Qualcomm Linux 调试指南

使用 printk 调试

使用 printk 技术在 Linux 内核中进行调试,以打印消息和跟踪。 include/linux/printk.h 中定义的 printk 封装函数支持为日志语句添加日志级别。例如:

调试内核模块

要调试内核模块,请在 kas shell 中执行以下操作:
  1. 使用 devtool modify linux-qcom 命令克隆内核代码。
  2. 内核模块签名默认处于禁用状态。要手动禁用内核模块签名配置 CONFIG_MODULE_SIG,请使用 menuconfig 命令。有关 menuconfig 命令的更多信息,请参阅”配置内核”。
以下命令可帮助您手动禁用内核模块签名配置:
这是一次性步骤。
  1. 在内核或模块中进行更改。
  2. 使用 bitbake esp-qcom-image 命令重新构建内核模块。
  3. 请参阅安装并启动内核以刷写更新后的内核镜像并重启。
有关更多信息,请参阅 Message logging with printk

使用日志级别调试

您可以使用 /linux/printk.h 中定义的任何其他日志级别打印消息。控制台日志由 printk 中使用的日志级别以及设备上选择的日志级别控制。 请根据您的用例选择日志级别。如果在频繁调用的函数中选择了较低的日志级别,可能会产生大量日志。 以下示例展示了各内核打印级别的日志:

启用并挂载 debugfs 文件系统

Debugfs 是一个允许内核开发人员向用户空间提供内核信息的文件系统。 Debugfs 用于访问内核数据结构和变量、跟踪事件、调试消息和统计信息。
  • 确保您的内核配置中设置了 CONFIG_DEBUG_FS(默认启用)。
  • 如果没有,可以在内核配置中使用 menuconfig 启用它。
  • 如果 debugfs 未默认挂载,请挂载它。
有关 kprobes、ftrace 和 MMIO 跟踪事件,请参阅内核探针与跟踪