Jądro Linuksa udostępnia wiele mechanizmów do diagnozowania problemów, w tym śledzenie, BPF i profilowanie. Większość tych technik jest dostępna w jądrze binarnym Generic Kernel Image (GKI). Podczas tworzenia produktów wykorzystuje się wiele innych narzędzi zintegrowanych z procesami tworzenia i 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 utrzymającymi upstream, aby dodać te funkcje do systemu Linux.
Funkcje debugowania w dalszym łańcuchu w modułach dostawców
Funkcje debugowania działają podobnie jak w przypadku innych funkcji i muszą korzystać z tych samych procesów opisanych w sekcji Poprawki dla Androida.
Inwazyjne funkcje debugowania na dalszych etapach
Niektóre przydatne funkcje debugowania wymagają specjalnych opcji konfiguracji, które są wyłączone w GKI i z tego powodu wymagają specjalnej kompilacji jądra. Te funkcje mogą być wyłączone z powodu ograniczeń wydajności lub nieodpowiednia do użytku produkcyjnego, ale są niezbędne do debugowania niektórych typów problemów. Przykładami takich narzędzi są środki do dezynfekcji (KASAN, UBSAN),
debugfs
oraz inne funkcje i narzędzia partnerów.
To Ty decydujesz, jak zarządzać specjalnymi jądrami z obsługą debugowania, które wpływają na interfejs modułu jądra (KMI). Powszechną praktyką jest używanie wewnętrznej kompilacji do debugowania i dostarczanie powstałych w ten sposób artefaktów klientom wewnętrznym lub kolejnym partnerom programistycznym. Zalecamy dalsze izolowanie takich funkcji w modułach, ponieważ funkcje debugowania związane z partnerem nie mogą być dodawane do jądra GKI poza wytycznymi opisanymi w łatkach dotyczących Androida.