调试功能

Linux 内核提供了许多机制来诊断问题,包括 tracingBPFprofiling。 大多数这些技术在通用内核映像 (GKI) 二进制内核中都可用。 在开发产品时,还有许多工具集成到开发或集成过程中,其中一些工具需要 GKI 中不包含的内核功能。 与大多数 GKI 功能一样,我们鼓励您与上游维护人员合作,将这些功能添加到 Linux 中。

供应商模块中的下游调试功能

调试功能的范围与其他类型的功能相似,并且必须遵循 Android 专用补丁 中描述的相同流程。

侵入式下游调试功能

一些有用的调试功能需要特殊的配置选项,这些选项在 GKI 中被禁用,因此需要内核的特殊构建版本。 这些功能可能由于性能损失或不适合生产使用而被禁用,但对于调试某些类型的问题是必不可少的。 此类工具的示例包括 sanitizers (KASAN, UBSAN)、debugfs 以及其他合作伙伴特定的功能和工具。

由您决定如何管理影响内核模块接口 (KMI) 的特殊启用调试的内核。 常见的做法是拥有一个内部调试版本,并将生成的工件交付给内部客户或下游开发合作伙伴。 我们建议继续将此类功能隔离到模块中,因为超出 Android 专用补丁 中描述的指南范围,合作伙伴特定的调试功能无法被 GKI 内核接受。