Der Linux-Kernel bietet viele Mechanismen zur Diagnose von Problemen, darunter Tracing, BPF und Profiling. Die meisten dieser Techniken sind im binären Kernel des Generic Kernel Image (GKI) verfügbar. Bei der Entwicklung von Produkten werden viele weitere Tools in die Entwicklungs- oder Integrationsprozesse eingebunden. Einige davon erfordern Kernelfunktionen, die nicht Teil von GKI sind. Wie bei den meisten GKI-Funktionen empfehlen wir Ihnen, mit Upstream-Maintainern zusammenzuarbeiten, um diese Funktionen zu Linux hinzuzufügen.
Nachgelagerte Funktionen zur Fehlerbehebung in Anbietermodulen
Debugging-Funktionen sind in ihrem Umfang mit anderen Arten von Funktionen vergleichbar und müssen denselben Prozessen folgen, die unter Android-spezifische Patches beschrieben sind.
Intrusive downstream debug features
Einige nützliche Debugfunktionen erfordern spezielle Konfigurationsoptionen, die in GKI deaktiviert sind und daher einen speziellen Kernel-Build erfordern. Diese Funktionen sind möglicherweise aufgrund von Leistungseinbußen oder Unzulässigkeit für die Produktionsnutzung deaktiviert, aber für die Behebung bestimmter Arten von Problemen unerlässlich. Beispiele für solche Tools sind Sanitizer (KASAN, UBSAN),debugfs
und andere partnerspezifische Funktionen und Tools.
Sie müssen selbst entscheiden, wie Sie spezielle debugfähige Kernel verwalten, die sich auf die Kernel-Modul-Schnittstelle (Kernel Module Interface, KMI) auswirken. Häufig wird ein interner Debug-Build erstellt und die resultierenden Artefakte an interne Kunden oder nachgelagerte Entwicklungspartner übergeben. Wir empfehlen, solche Funktionen weiterhin in Modulen zu isolieren, da partnerspezifische Debugfunktionen nur im Rahmen der in den Android-spezifischen Patches beschriebenen Richtlinien in den GKI-Kernel aufgenommen werden können.