Funkcje debugowania

Jądro systemu Linux udostępnia wiele mechanizmów do diagnozowania problemów, w tym śledzenie, BPFprofilowanie. Większość tych technik jest dostępna w binarnym jądrze GKI (Generic Kernel Image). Podczas tworzenia produktów istnieje wiele innych narzędzi zintegrowanych z procesami tworzenia lub integracji. Niektóre z nich wymagają funkcji jądra, które nie są częścią GKI. Podobnie jak w przypadku większości funkcji GKI zachęcamy do współpracy z osobami odpowiedzialnymi za utrzymanie upstream, aby dodać te funkcje do systemu Linux.

Funkcje debugowania w modułach dostawcy

Funkcje debugowania są podobne do innych rodzajów funkcji i muszą być zgodne z tymi samymi procesami, które opisano w sekcji Poprawki dotyczące Androida.

Natrętne funkcje debugowania na dalszym etapie

Niektóre przydatne funkcje debugowania wymagają specjalnych opcji konfiguracji, które są wyłączone w GKI, dlatego wymagają specjalnej kompilacji jądra. Te funkcje mogą być wyłączone z powodu obniżenia wydajności lub nieprzydatności do użytku w środowisku produkcyjnym, ale są niezbędne do debugowania niektórych rodzajów problemów. Przykłady takich narzędzi to sanitizery (KASAN, UBSAN)debugfs oraz inne funkcje i narzędzia specyficzne dla partnera.

To Ty decydujesz, jak zarządzać specjalnymi jądrami z włączonym debugowaniem, które mają wpływ na interfejs modułu jądra (KMI). Częstą praktyką jest tworzenie wewnętrznej wersji debugowania i przekazywanie wynikowych artefaktów klientom wewnętrznym lub partnerom zewnętrznym zajmującym się dalszym rozwojem. Zalecamy dalsze wydzielanie takich funkcji do modułów, ponieważ funkcje debugowania specyficzne dla partnera nie mogą być akceptowane w jądrze GKI poza wytycznymi opisanymi w sekcji Patche specyficzne dla Androida.