Linux कर्नल, समस्याओं का पता लगाने के लिए कई तरीके उपलब्ध कराता है. इनमें ट्रेसिंग, बीपीएफ़, और प्रोफ़ाइलिंग शामिल हैं. इनमें से ज़्यादातर तकनीकें, जेनेरिक कर्नल इमेज (GKI) बाइनरी कर्नल में उपलब्ध हैं. प्रॉडक्ट डेवलप करते समय, कई और टूल इंटिग्रेट किए जाते हैं. इनमें से कुछ टूल को कर्नल की ऐसी सुविधाओं की ज़रूरत होती है जो GKI का हिस्सा नहीं हैं. हमारा सुझाव है कि आप GKI की ज़्यादातर सुविधाओं की तरह ही, इन सुविधाओं को Linux में जोड़ने के लिए अपस्ट्रीम मेंटेनर के साथ काम करें.
वेंडर मॉड्यूल में डीबग करने की डाउनस्ट्रीम सुविधाएं
डीबग करने की सुविधाएं, अन्य सुविधाओं की तरह ही काम करती हैं. साथ ही, इन्हें Android के लिए उपलब्ध पैच में बताई गई प्रोसेस के मुताबिक ही इस्तेमाल किया जाना चाहिए.
डीबग करने की ऐसी सुविधाएं जो डाउनस्ट्रीम में दख़ल देती हैं
डीबग करने की कुछ ज़रूरी सुविधाओं के लिए, कॉन्फ़िगरेशन के खास विकल्पों की ज़रूरत होती है. ये विकल्प, GKI में बंद होते हैं. इसलिए, इनके लिए कर्नल के खास बिल्ड की ज़रूरत होती है. इन सुविधाओं को परफ़ॉर्मेंस से जुड़ी पाबंदियों या प्रोडक्शन के लिए सही न होने की वजह से बंद किया जा सकता है. हालांकि, कुछ तरह की समस्याओं को डीबग करने के लिए ये सुविधाएं बहुत ज़रूरी हैं. ऐसे टूल के उदाहरणों में सैनिटाइज़र (KASAN, UBSAN),
debugfs, और पार्टनर के हिसाब से उपलब्ध अन्य सुविधाएं और टूल शामिल हैं.
यह आपको तय करना है कि आपको डीबग करने की सुविधा वाले उन खास कर्नलों को कैसे मैनेज करना है जो कर्नेल मॉड्यूल इंटरफ़ेस (केएमआई) पर असर डालते हैं. आम तौर पर, इंटरनल डीबग बिल्ड बनाया जाता है. इसके बाद, इससे मिले आर्टफ़ैक्ट को इंटरनल ग्राहकों या डाउनस्ट्रीम डेवलपमेंट पार्टनर को डिलीवर किया जाता है. हमारा सुझाव है कि आप इन सुविधाओं को मॉड्यूल में अलग-अलग रखें. ऐसा इसलिए, क्योंकि पार्टनर के हिसाब से डीबग करने की सुविधाओं को, Android के लिए खास तौर पर बनाए गए पैच में बताए गए दिशा-निर्देशों के अलावा, GKI कर्नल में स्वीकार नहीं किया जा सकता.