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