अपना प्रोजेक्ट डीबग करना

नेटिव क्रैश को डीबग करें

अगर आपको नेटिव क्रैश डंप या टूंबस्टोन को समझने में समस्या आ रही है, तो नेटिव Android प्लैटफ़ॉर्म कोड को डीबग करना एक अच्छा परिचय है.

सामान्य तरह के क्रैश के बारे में पूरी जानकारी पाने और उनकी जांच करने का तरीका जानने के लिए, यहां देखें नेटिव क्रैश का पता लगाना.

ndk-stack टूल की मदद से, यह दिखाया जा सकता है कि आपके ऐप्लिकेशन क्रैश हुए हैं या नहीं. Android Studio में आम तौर पर बताए गए तरीके से क्रैश को डीबग किया जा सकता है अपने ऐप्लिकेशन को डीबग करने के बारे में जानकारी देने वाले दस्तावेज़ को डीबग करें. अगर आपको Google Ads API का इस्तेमाल करना है, कमांड-लाइन, ndk-gdb की मदद से आप या तो gdb या आपके शेल से lldb.

ऐप्लिकेशन को टूंबस्टोन ट्रेस का सीधे ऐक्सेस दें

Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन में, आपके पास अपने ऐप्लिकेशन के नेटिव क्रैश को ऐक्सेस करने का विकल्प होगा कब्र का पत्थर प्रोटोकॉल बफ़र को ApplicationExitInfo.getTraceInputStream() तरीका. प्रोटोकॉल बफ़र को इस स्कीमा का इस्तेमाल करके क्रम से लगाया जाता है. पहले, इस जानकारी तक पहुंचने का एकमात्र तरीका यह था Android डीबग ब्रिज (adb).

यहां एक उदाहरण दिया गया है, जिसमें इसे अपने ऐप्लिकेशन में लागू करने का तरीका बताया गया है:

ActivityManager activityManager: ActivityManager = getSystemService(Context.ACTIVITY_SERVICE);
MutableList<ApplicationExitInfo> exitReasons = activityManager.getHistoricalProcessExitReasons(/* packageName = */ null, /* pid = */ 0, /* maxNum = */ 5);
for (ApplicationExitInfo aei: exitReasons) {
    if (aei.getReason() == REASON_CRASH_NATIVE) {
        // Get the tombstone input stream.
        InputStream trace = aei.getTraceInputStream();
        // The tombstone parser built with protoc uses the tombstone schema, then parses the trace.
        Tombstone tombstone = Tombstone.parseFrom(trace);
    }
}

नेटिव मेमोरी की समस्याओं को डीबग करें

पता सैनिटाइज़र (HWASan/ASan)

HWAddress सैनिटाइज़र (HWASan) और अड्रेस सैनिटाइज़र (ASan), वैलग्रिंड की तरह है, लेकिन Android पर तेज़ी से और बेहतर तरीके से काम करता है.

Android पर मेमोरी की गड़बड़ियों को डीबग करने के लिए, ये आपके सबसे अच्छे विकल्प हैं.

मैलक डीबग

यहां जाएं: Malloc डीबग और libc कॉलबैक का इस्तेमाल करके, नेटिव मेमोरी ट्रैकिंग इसमें C लाइब्रेरी में, डीबग करने के पहले से मौजूद विकल्पों के बारे में ज़्यादा जानकारी मिलेगी साइट की मेमोरी से जुड़ी समस्याएं ठीक करना.

मैलक हुक

अगर आपको खुद के टूल बनाने हैं, तो Android की libc भी इंटरसेप्ट करने की सुविधा देती है प्रोग्राम के तहत उपलब्ध होने वाले सभी ऐलोकेशन/फ़्री कॉल. ज़्यादा जानकारी के लिए, malloc_hooks दस्तावेज़ देखें.

मैलक स्टैटिस्टिक्स

Android, मॉल की जानकारी(3) और malloc_info(3) <malloc.h> के लिए एक्सटेंशन.

malloc_info फ़ंक्शन, Android 6.0 (Marshmallow) और Android 6.0 (Marshmallow) में उपलब्ध है उच्च है और इसका एक्सएमएल स्कीमा को बायोनिक्स में दस्तावेज़ के तौर पर दर्ज किया गया है mallock.h हेडर.

प्रोफ़ाइलिंग

नेटिव कोड की सीपीयू प्रोफ़ाइलिंग के लिए, Simpleperf का इस्तेमाल किया जा सकता है.