Funzionalità di debug

Il kernel Linux fornisce molti meccanismi per diagnosticare i problemi, tra cui tracing, BPF e profiling. La maggior parte di queste tecniche è disponibile nel kernel binario Generic Kernel Image (GKI). Durante lo sviluppo dei prodotti, sono integrati molti altri strumenti nei processi di sviluppo o integrazione, alcuni dei quali richiedono funzionalità del kernel che non fanno parte di GKI. Come per la maggior parte delle funzionalità GKI, ti consigliamo di collaborare con i manutentori upstream per aggiungere queste funzionalità a Linux.

Funzionalità di debug downstream nei moduli del fornitore

Le funzionalità di debug hanno un ambito simile ad altri tipi di funzionalità e devono seguire le stesse procedure descritte nelle patch specifiche per Android.

Funzionalità di debug downstream intrusive

Alcune utili funzionalità di debug richiedono opzioni di configurazione speciali che sono disattivate in GKI e pertanto richiedono una build speciale del kernel. Queste funzionalità potrebbero essere disattivate a causa di penalità di rendimento o inadeguatezza per l'uso in produzione, ma sono indispensabili per il debug di determinati tipi di problemi. Alcuni esempi di questi strumenti includono sanificatori (KASAN, UBSAN), debugfs e altre funzionalità e strumenti specifici per i partner.

Spetta a te determinare come gestire i kernel speciali abilitati per il debug che influiscono sulla Kernel Module Interface (KMI). Una pratica comune è quella di avere una build di debug interna e fornire gli artefatti risultanti ai clienti interni o ai partner di sviluppo downstream. Ti consigliamo di continuare a isolare queste funzionalità in moduli, in quanto le funzionalità di debug specifiche del partner non possono essere accettate nel kernel GKI oltre le linee guida descritte in Patch specifiche per Android.