Crashlytics से जुड़ी समस्या हल करने और अक्सर पूछे जाने वाले सवाल


इस पेज पर, समस्या हल करने में मदद मिलती है. साथ ही, Crashlytics के इस्तेमाल के बारे में अक्सर पूछे जाने वाले सवालों के जवाब भी मिलते हैं. अगर आपको अपनी ज़रूरत के हिसाब से जानकारी नहीं मिल पा रही है या आपको और मदद चाहिए, तो Firebase की सहायता टीम से संपर्क करें.

समस्या हल करने के सामान्य तरीके/अक्सर पूछे जाने वाले सवाल

आपको Firebase कंसोल में, समस्याएं टेबल में दी गई समस्याओं के लिए, दो अलग-अलग फ़ॉर्मैट दिख सकते हैं. साथ ही, आपको अपनी कुछ समस्याओं में "वैरिएंट" नाम की सुविधा भी दिख सकती है. इसकी वजह यहां बताई गई है!

साल 2023 की शुरुआत में, हमने इवेंट को ग्रुप करने के लिए बेहतर विश्लेषण इंजन के साथ-साथ अपडेट किया गया डिज़ाइन और नई समस्याओं (जैसे, वैरिएंट!) के लिए कुछ बेहतर सुविधाएं लॉन्च की थीं. पूरी जानकारी के लिए, हमारी हाल ही की ब्लॉग पोस्ट पढ़ें. हालांकि, हाइलाइट के बारे में जानने के लिए, यहां पढ़ें.

Crashlytics आपके ऐप्लिकेशन के सभी इवेंट (जैसे, क्रैश, गैर-फ़ैटल, और ANR) का विश्लेषण करता है. साथ ही, इवेंट के ग्रुप बनाता है, जिन्हें समस्याएं कहा जाता है. किसी समस्या में मौजूद सभी इवेंट में एक ही तरह की गड़बड़ी होती है.

इवेंट को इन समस्याओं में ग्रुप करने के लिए, बेहतर विश्लेषण इंजन अब इवेंट के कई पहलुओं को देखता है. इनमें स्टैक ट्रेस में फ़्रेम, अपवाद मैसेज, गड़बड़ी कोड, और प्लैटफ़ॉर्म या गड़बड़ी के टाइप की अन्य विशेषताएं शामिल हैं.

हालांकि, इवेंट के इस ग्रुप में, गड़बड़ी की वजह से स्टैक ट्रेस अलग-अलग हो सकते हैं. अलग-अलग स्टैक ट्रेस का मतलब हो सकता है कि गड़बड़ी की मुख्य वजह अलग है. किसी समस्या में इस संभावित अंतर को दिखाने के लिए, हम अब समस्याओं में वैरिएंट बनाते हैं. हर वैरिएंट, किसी समस्या में उन इवेंट का सब-ग्रुप होता है जिनमें एक ही फ़ेल्योर पॉइंट और एक जैसा स्टैक ट्रेस होता है. वैरिएंट की मदद से, किसी समस्या में सबसे सामान्य स्टैक ट्रेस को डीबग किया जा सकता है. साथ ही, यह भी पता लगाया जा सकता है कि समस्या की वजह अलग-अलग वजहें हैं या नहीं.

इन सुधारों के बाद, आपको ये सुविधाएं मिलेंगी:

  • समस्या वाली लाइन में दिखाया गया बेहतर मेटाडेटा
    अब आपके ऐप्लिकेशन में समस्याओं को समझना और उन्हें प्राथमिकता के आधार पर ठीक करना आसान हो गया है.

  • डुप्लीकेट समस्याएं कम होती हैं
    लाइन नंबर में बदलाव करने से कोई नई समस्या नहीं होती.

  • अलग-अलग वजहों से होने वाली मुश्किल समस्याओं को आसानी से डीबग करना
    किसी समस्या में सबसे सामान्य स्टैक ट्रेस को डीबग करने के लिए, वैरिएंट का इस्तेमाल करें.

  • ज़्यादा काम की चेतावनियां और सिग्नल
    नई समस्या का मतलब है कि कोई नया बग है.

  • ज़्यादा असरदार खोज
    हर समस्या में, खोजे जा सकने वाले ज़्यादा मेटाडेटा होते हैं. जैसे, अपवाद का टाइप और पैकेज का नाम.

ये सुधार इस तरह रोल आउट किए जा रहे हैं:

  • जब हमें आपके ऐप्लिकेशन से नए इवेंट मिलेंगे, तो हम यह जांच करेंगे कि वे किसी मौजूदा समस्या से मेल खाते हैं या नहीं.

  • अगर कोई मैच नहीं होता है, तो हम इवेंट पर अपने बेहतर इवेंट-ग्रुपिंग एल्गोरिदम को अपने-आप लागू कर देंगे. साथ ही, नए मेटाडेटा डिज़ाइन के साथ एक नई समस्या बना देंगे.

इवेंट ग्रुप करने की सुविधा में, हमने यह पहला बड़ा बदलाव किया है. अगर आपके पास कोई सुझाव/राय है या आपको कोई समस्या आ रही है, तो कृपया शिकायत दर्ज करके हमें बताएं.

अगर आपको क्रैश-फ़्री मेट्रिक (जैसे, क्रैश-फ़्री उपयोगकर्ता और सेशन) और/या वेग से जुड़ी चेतावनियां नहीं दिख रही हैं, तो पक्का करें कि आपने Crashlytics SDK टूल का 10.8.0 या इसके बाद का वर्शन इस्तेमाल किया हो.

अगर आपको ब्रेडक्रंब लॉग नहीं दिख रहे हैं, तो हमारा सुझाव है कि आप अपने ऐप्लिकेशन के कॉन्फ़िगरेशन में Google Analytics देखें. पक्का करें कि आपने ये ज़रूरी शर्तें पूरी की हों:

  • आपने अपने Firebase प्रोजेक्ट में, Google Analytics को चालू किया हो.

  • आपने Google Analytics के लिए, डेटा शेयर करने की सुविधा चालू की है. Analytics में डेटा शेयर करने की सेटिंग मैनेज करना में जाकर, इस सेटिंग के बारे में ज़्यादा जानें

  • आपने अपने ऐप्लिकेशन में, Google Analytics के लिए Firebase SDK टूल जोड़ा है . इस SDK टूल को Crashlytics SDK टूल के साथ जोड़ना ज़रूरी है.

  • आपने अपने ऐप्लिकेशन में इस्तेमाल किए जाने वाले सभी प्रॉडक्ट के लिए, Firebase SDK टूल के नए वर्शन इस्तेमाल किए हैं.

    खास तौर पर, यह देखें कि Google Analytics के लिए, Firebase SDK टूल के कम से कम इस वर्शन का इस्तेमाल किया जा रहा हो:
    iOS+ — v6.3.1+ (macOS और tvOS के लिए v8.9.0+).

अपने प्रोजेक्ट के dSYMs अपलोड करने और ज़्यादा जानकारी वाला आउटपुट पाने के लिए, ये देखें:

  1. पक्का करें कि आपके प्रोजेक्ट के बिल्ड फ़ेज़ में Crashlytics रन स्क्रिप्ट शामिल हो, जिससे Xcode को बिल्ड के समय आपके प्रोजेक्ट के dSYM अपलोड करने की अनुमति मिलती है. स्क्रिप्ट जोड़ने के निर्देशों के लिए, Crashlytics को शुरू करना पढ़ें. अपना प्रोजेक्ट अपडेट करने के बाद, ऐप्लिकेशन को क्रैश करें और पुष्टि करें कि क्रैश की जानकारी Crashlytics डैशबोर्ड में दिख रही है.

  2. अगर आपको Firebase कंसोल में "dSYM मौजूद नहीं है" वाली चेतावनी दिखती है, तो Xcode की जांच करें. इससे यह पक्का किया जा सकेगा कि बिल्ड के लिए, dSYM सही तरीके से जनरेट हो रहे हैं.

  3. अगर Xcode सही तरीके से dSYMs जनरेट कर रहा है और आपको अब भी dSYMs नहीं दिख रहे हैं, तो हो सकता है कि dSYMs अपलोड करते समय, रन स्क्रिप्ट टूल फ़्रीज़ हो गया हो. ऐसे में, इनमें से हर एक को आज़माएं:

    • पक्का करें कि आपके डिवाइस में Crashlytics का नया वर्शन इंस्टॉल हो.

    • छूटी हुई dSYM फ़ाइलों को मैन्युअल तरीके से अपलोड करें:

      • पहला विकल्प: dSYMs टैब में, कॉन्सोल पर मौजूद "खींचें और छोड़ें" विकल्प का इस्तेमाल करके, ज़िप संग्रह अपलोड करें. इसमें वे dSYM फ़ाइलें शामिल होनी चाहिए जो मौजूद नहीं हैं.
      • दूसरा विकल्प: dSYMs टैब में दिए गए UUID के लिए, मौजूद न होने वाली dSYM फ़ाइलों को अपलोड करने के लिए, upload-symbols स्क्रिप्ट का इस्तेमाल करें.
  4. अगर आपको dSYMs न दिखने की समस्या बनी रहती है या अपलोड नहीं हो पाते हैं, तो Firebase की सहायता टीम से संपर्क करें. साथ ही, अपने लॉग ज़रूर शामिल करें.

अगर आपको लगता है कि आपकी स्टैक ट्रेस को सिम्बॉलिकेट करने में कोई समस्या हुई है, तो इन बातों की जांच करें:

  • अगर आपके ऐप्लिकेशन की लाइब्रेरी के फ़्रेम में, आपके ऐप्लिकेशन के कोड के रेफ़रंस मौजूद नहीं हैं, तो पक्का करें कि -fomit-frame-pointer को संकलन फ़्लैग के तौर पर सेट न किया गया हो.

  • अगर आपको अपने ऐप्लिकेशन की लाइब्रेरी के लिए कई (Missing) फ़्रेम दिखते हैं, तो देखें कि Firebase कंसोल के Crashlytics dSYMs टैब में, ऐप्लिकेशन के जिस वर्शन पर असर पड़ा है उसके लिए, वैकल्पिक dSYMs 'मौजूद नहीं हैं' के तौर पर सूची में शामिल हैं या नहीं. अगर ऐसा है, तो इस पेज पर dSYMs are missing/not uploading FAQ में, "dSYM alert is missing" से जुड़ी समस्या हल करने का तरीका अपनाएं. ध्यान दें कि इन dSYMs को अपलोड करने से, पहले से क्रैश होने की समस्याओं को सिम्बॉलिकेट नहीं किया जाएगा. हालांकि, इससे आने वाले समय में क्रैश होने की समस्याओं को सिम्बॉलिकेट करने में मदद मिलेगी.

नोट की मदद से, प्रोजेक्ट के सदस्य किसी खास समस्या के बारे में सवाल पूछ सकते हैं, स्टेटस के बारे में अपडेट दे सकते हैं वगैरह.

जब कोई प्रोजेक्ट में शामिल व्यक्ति कोई नोट पोस्ट करता है, तो उसे उसके Google खाते के ईमेल पते से लेबल किया जाता है. यह ईमेल पता, नोट के साथ उन सभी प्रोजेक्ट सदस्यों को दिखता है जिनके पास नोट देखने का ऐक्सेस है.

यहां बताया गया है कि नोट देखने, लिखने, और मिटाने के लिए, किस तरह का ऐक्सेस ज़रूरी है:

क्रैश-फ़्री मेट्रिक को समझना लेख पढ़ें.

नोट की मदद से, प्रोजेक्ट के सदस्य किसी खास समस्या के बारे में सवाल पूछ सकते हैं, स्टेटस के बारे में अपडेट दे सकते हैं वगैरह.

जब कोई प्रोजेक्ट में शामिल व्यक्ति कोई नोट पोस्ट करता है, तो उसे उसके Google खाते के ईमेल पते से लेबल किया जाता है. यह ईमेल पता, नोट के साथ उन सभी प्रोजेक्ट सदस्यों को दिखता है जिनके पास नोट देखने का ऐक्सेस है.

यहां बताया गया है कि नोट देखने, लिखने, और मिटाने के लिए, किस तरह का ऐक्सेस ज़रूरी है:

इंटिग्रेशन

अगर आपका प्रोजेक्ट Google Mobile Ads SDK टूल के साथ-साथ Crashlytics का इस्तेमाल करता है, तो हो सकता है कि अपवाद हैंडलर को रजिस्टर करते समय, क्रैश रिपोर्टर रुकावट डाल रहे हों. इस समस्या को ठीक करने के लिए, disableSDKCrashReporting को कॉल करके Mobile Ads SDK टूल में क्रैश रिपोर्टिंग की सुविधा बंद करें.

Crashlytics को BigQuery से लिंक करने के बाद, आपके बनाए गए नए डेटासेट अपने-आप अमेरिका में सेव हो जाते हैं. भले ही, आपका Firebase प्रोजेक्ट किसी भी देश/इलाके में हो.

प्लैटफ़ॉर्म से जुड़ी सहायता

हां, macOS और tvOS प्रोजेक्ट में Crashlytics लागू किया जा सकता है. Google Analytics के लिए, Firebase SDK टूल का 8.9.0 या इसके बाद का वर्शन शामिल करना न भूलें, ताकि क्रैश से जुड़ी मेट्रिक को ऐक्सेस किया जा सके. इन मेट्रिक में, क्रैश से बचने वाले उपयोगकर्ता, नई रिलीज़, वेग से जुड़ी चेतावनियां, और ब्रेडक्रंब लॉग शामिल हैं.Google Analytics

अब एक ही Firebase प्रोजेक्ट में, कई ऐप्लिकेशन के क्रैश की शिकायत की जा सकती है. ऐसा तब भी किया जा सकता है, जब ऐप्लिकेशन अलग-अलग Apple प्लैटफ़ॉर्म (जैसे, iOS, tvOS, और Mac Catalyst) के लिए बनाए गए हों. पहले, अगर ऐप्लिकेशन में एक ही बंडल आईडी था, तो आपको उन्हें अलग-अलग Firebase प्रोजेक्ट में बांटना पड़ता था.

बेहतर होने के बजाय खराब हुई परफ़ॉर्मेंस से जुड़ी समस्याएं

जब आपने पहले ही समस्या को बंद कर दिया हो, लेकिन Crashlytics को एक नई रिपोर्ट मिले कि समस्या फिर से आ गई है, तो समस्या फिर से आ गई है. Crashlytics, इन समस्याओं को अपने-आप फिर से खोलता है, ताकि आप अपने ऐप्लिकेशन के हिसाब से इनका समाधान कर सकें.

यहां एक उदाहरण दिया गया है, जिसमें बताया गया है कि Crashlytics किसी समस्या को रिग्रेशन के तौर पर कैसे कैटगरी में बांटता है:

  1. Crashlytics को पहली बार, क्रैश "A" के बारे में क्रैश रिपोर्ट मिलती है. Crashlytics उस क्रैश से जुड़ी समस्या (समस्या "A") खोलता है.
  2. आपने इस गड़बड़ी को तुरंत ठीक कर दिया, "A" समस्या को बंद कर दिया, और फिर अपने ऐप्लिकेशन का नया वर्शन रिलीज़ कर दिया.
  3. समस्या को बंद करने के बाद, Crashlytics को "A" समस्या के बारे में एक और शिकायत मिलती है.
    • अगर रिपोर्ट किसी ऐसे ऐप्लिकेशन वर्शन से है जिसके बारे में Crashlytics को पहले से पता था, तो Crashlytics उस समस्या को फिर से होने वाली समस्या के तौर पर नहीं लेगा. इसका मतलब है कि उस वर्शन ने किसी भी क्रैश के लिए क्रैश रिपोर्ट भेजी थी. समस्या बंद रहेगी.
    • अगर रिपोर्ट किसी ऐसे ऐप्लिकेशन वर्शन से मिली है जिसके बारे में Crashlytics नहीं जानता था, तो Crashlytics यह मान लेगा कि समस्या फिर से आ गई है और वह समस्या को फिर से खोल देगा.

जब कोई समस्या फिर से दिखने लगती है, तो हम आपको इसकी सूचना भेजते हैं. साथ ही, समस्या में फिर से दिखने का सिग्नल जोड़ते हैं. इससे आपको पता चलता है कि Crashlytics ने समस्या को फिर से खोला है. अगर आपको हमारे रिग्रेशन एल्गोरिदम की वजह से, किसी समस्या को फिर से खोलना नहीं है, तो उसे बंद करने के बजाय "म्यूट" करें.

अगर कोई रिपोर्ट ऐप्लिकेशन के किसी पुराने वर्शन से है और आपने समस्या को ठीक करने के बाद, उस वर्शन से कभी भी क्रैश की कोई रिपोर्ट नहीं मिली है, तो Crashlytics को लगता है कि समस्या फिर से आ गई है. ऐसे में, वह समस्या को फिर से खोल देगा.

यह स्थिति तब हो सकती है, जब आपने किसी गड़बड़ी को ठीक करके, अपने ऐप्लिकेशन का नया वर्शन रिलीज़ कर दिया हो, लेकिन आपके ऐप्लिकेशन के पुराने वर्शन का इस्तेमाल करने वाले उपयोगकर्ता अब भी उस गड़बड़ी से परेशान हों. अगर आपने समस्या को ठीक करने के बाद, उनमें से किसी पुराने वर्शन से कभी क्रैश की कोई रिपोर्ट नहीं भेजी है और उन उपयोगकर्ताओं को गड़बड़ी का सामना करना पड़ता है, तो उन क्रैश रिपोर्ट से, पहले से मौजूद समस्या फिर से ट्रिगर हो जाएगी.

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