Linux カーネルは、トレース、BPF、プロファイリングを含む問題を診断するための多くのメカニズムを備えています。これらの手法のほとんどは、汎用カーネル イメージ(GKI)バイナリ カーネルで使用できます。製品を開発する場合、開発プロセスまたは統合プロセスに統合されているツールは他にも多数ありますが、その中には GKI に含まれないカーネル機能を必要とするものがあります。ほとんどの GKI 機能と同様に、アップストリームの管理者と連携して、これらの機能を Linux に追加することをおすすめします。
ベンダー モジュールのダウンストリーム デバッグ機能
デバッグ機能のスコープは他の種類の機能と類似しており、Android 固有のパッチで説明されているものと同じプロセスに従う必要があります。
干渉するダウンストリーム デバッグ機能
一部の便利なデバッグ機能では、GKI で無効になっている特別な構成オプションが必要となるため、カーネルの特別なビルドが必要です。これらの機能は、パフォーマンスの低下や本番環境での使用への不適合性により無効になる場合がありますが、特定の種類の問題のデバッグには不可欠です。このようなツールの例としては、サニタイザー(KASAN、UBSAN)、debugfs
、その他のパートナー固有の機能やツールなどがあります。
カーネル モジュール インターフェース(KMI)に影響を与える、特別なデバッグ対応のカーネルをどのように管理するかは、デベロッパーが決定します。一般的な方法は、内部デバッグビルドを作成し、結果のアーティファクトを内部顧客またはダウンストリームの開発パートナーに提供することです。Android 固有のパッチに記載されているガイドラインの内容を超えて、パートナー固有のデバッグ機能を GKI カーネルに受け入れることはできないため、このような機能は、引き続きモジュールに分離することをおすすめします。