Der Linux-Kernel bietet viele Mechanismen zur Diagnose von Problemen, darunter Tracing, BPF und Profiling. Die meisten dieser Techniken sind im binären GKI-Kernel (Generic Kernel Image) verfügbar. Bei der Entwicklung von Produkten gibt es viele weitere Tools, die in die Entwicklungs- oder Integrationsprozesse integriert sind. Einige davon erfordern Kernel-Funktionen, die nicht Teil von GKI sind. Wie bei den meisten GKI-Funktionen empfehlen wir Ihnen, mit den Upstream-Maintainern zusammenzuarbeiten, um diese Funktionen in Linux hinzuzufügen.
Downstream-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 werden.
Aufdringliche nachgelagerte Funktionen zur Fehlerbehebung
Für einige nützliche Debugging-Funktionen sind spezielle Konfigurationsoptionen erforderlich, die in GKI deaktiviert sind. Daher ist ein spezieller Build des Kernels erforderlich. Diese Funktionen sind möglicherweise aufgrund von Leistungseinbußen oder Ungeeignetheit für die Produktion deaktiviert, sind aber für das Debuggen bestimmter Arten von Problemen unerlässlich. Beispiele für solche Tools sind Sanitizer (KASAN, UBSAN), debugfs
und andere partnerspezifische Funktionen und Tools.
Es liegt an Ihnen, wie Sie spezielle Debug-fähige Kernel verwalten, die sich auf die Kernelmodulschnittstelle (Kernel Module Interface, KMI) auswirken. Häufig wird ein interner Debug-Build erstellt und die resultierenden Artefakte an interne Kunden oder nachgelagerte Entwicklungspartner gesendet. Wir empfehlen, solche Funktionen weiterhin in Module zu isolieren, da partnerspezifische Debugging-Funktionen nicht über die in Android-spezifische Patches beschriebenen Richtlinien hinaus in den GKI-Kernel aufgenommen werden können.