Crashlytics সমস্যা সমাধান এবং FAQ


এই পৃষ্ঠাটি Crashlytics ব্যবহার করার বিষয়ে প্রায়শই জিজ্ঞাসিত প্রশ্নের সমস্যা সমাধানে সহায়তা এবং উত্তর প্রদান করে। আপনি যা খুঁজছেন তা খুঁজে না পেলে বা অতিরিক্ত সাহায্যের প্রয়োজন হলে, Firebase সহায়তার সাথে যোগাযোগ করুন।

সাধারণ সমস্যা সমাধান/FAQ

Firebase কনসোলে আপনার ইস্যু টেবিলে তালিকাভুক্ত সমস্যার জন্য আপনি দুটি ভিন্ন ফর্ম্যাট লক্ষ্য করতে পারেন। এবং আপনি আপনার কিছু সমস্যার মধ্যে "ভেরিয়েন্ট" নামক একটি বৈশিষ্ট্যও লক্ষ্য করতে পারেন। এখানে কেন!

2023 সালের গোড়ার দিকে, আমরা ইভেন্টগুলিকে গ্রুপ করার জন্য একটি উন্নত বিশ্লেষণ ইঞ্জিনের পাশাপাশি একটি আপডেট করা ডিজাইন এবং নতুন সমস্যাগুলির জন্য কিছু উন্নত বৈশিষ্ট্য নিয়ে এসেছি (যেমন বৈকল্পিক!)। সমস্ত বিবরণের জন্য আমাদের সাম্প্রতিক ব্লগ পোস্টটি দেখুন, তবে আপনি হাইলাইটগুলির জন্য নীচে পড়তে পারেন।

Crashlytics আপনার অ্যাপ থেকে সমস্ত ইভেন্ট বিশ্লেষণ করে (যেমন ক্র্যাশ, নন-ফেটাল, এবং ANR) এবং ইভেন্টের গ্রুপ তৈরি করে যাকে সমস্যা বলা হয় — একটি ইস্যুতে সমস্ত ইভেন্টের ব্যর্থতার একটি সাধারণ পয়েন্ট থাকে।

এই সমস্যাগুলির মধ্যে ইভেন্টগুলিকে গোষ্ঠীভুক্ত করার জন্য, উন্নত বিশ্লেষণ ইঞ্জিন এখন ইভেন্টের অনেক দিককে দেখে, যার মধ্যে স্ট্যাক ট্রেসের ফ্রেম, ব্যতিক্রম বার্তা, ত্রুটি কোড এবং অন্যান্য প্ল্যাটফর্ম বা ত্রুটির ধরন বৈশিষ্ট্যগুলি রয়েছে৷

যাইহোক, ইভেন্টের এই গ্রুপের মধ্যে, ব্যর্থতার দিকে পরিচালিত স্ট্যাক ট্রেসগুলি ভিন্ন হতে পারে। একটি ভিন্ন স্ট্যাক ট্রেস একটি ভিন্ন মূল কারণ বোঝাতে পারে। একটি ইস্যুতে এই সম্ভাব্য পার্থক্যটি উপস্থাপন করার জন্য, আমরা এখন সমস্যার মধ্যে ভেরিয়েন্ট তৈরি করি - প্রতিটি ভেরিয়েন্ট হল একটি ইস্যুতে ইভেন্টগুলির একটি সাব-গ্রুপ যার একই ব্যর্থতা পয়েন্ট এবং একই স্ট্যাক ট্রেস রয়েছে। ভেরিয়েন্টের সাহায্যে, আপনি একটি সমস্যার মধ্যে সবচেয়ে সাধারণ স্ট্যাক ট্রেসগুলি ডিবাগ করতে পারেন এবং বিভিন্ন মূল কারণগুলি ব্যর্থতার দিকে নিয়ে যাচ্ছে কিনা তা নির্ধারণ করতে পারেন।

এই উন্নতিগুলির সাথে আপনি যা অনুভব করবেন তা এখানে:

  • সংশোধিত মেটাডেটা ইস্যু সারির মধ্যে প্রদর্শিত হয়
    আপনার অ্যাপে সমস্যাগুলি বোঝা এবং ট্রাইজ করা এখন সহজ।

  • কম ডুপ্লিকেট সমস্যা
    একটি লাইন নম্বর পরিবর্তনের ফলে একটি নতুন সমস্যা হয় না।

  • বিভিন্ন মূল কারণ সহ জটিল সমস্যার সহজ ডিবাগিং
    একটি সমস্যার মধ্যে সবচেয়ে সাধারণ স্ট্যাক ট্রেস ডিবাগ করতে ভেরিয়েন্ট ব্যবহার করুন।

  • আরও অর্থপূর্ণ সতর্কতা এবং সংকেত
    একটি নতুন সমস্যা আসলে একটি নতুন বাগ প্রতিনিধিত্ব করে।

  • আরো শক্তিশালী অনুসন্ধান
    প্রতিটি সমস্যায় আরও অনুসন্ধানযোগ্য মেটাডেটা থাকে, যেমন ব্যতিক্রমের ধরন এবং প্যাকেজের নাম।

এই উন্নতিগুলি কীভাবে ঘটছে তা এখানে:

  • যখন আমরা আপনার অ্যাপ থেকে নতুন ইভেন্টগুলি পাই, তখন আমরা তা একটি বিদ্যমান সমস্যার সাথে মেলে কিনা তা পরীক্ষা করব।

  • যদি কোন মিল না থাকে, আমরা স্বয়ংক্রিয়ভাবে ইভেন্টে আমাদের স্মার্ট ইভেন্ট-গ্রুপিং অ্যালগরিদম প্রয়োগ করব এবং পরিমার্জিত মেটাডেটা ডিজাইনের সাথে একটি নতুন সমস্যা তৈরি করব।

এটিই প্রথম বড় আপডেট যা আমরা আমাদের ইভেন্ট গ্রুপিংয়ে তৈরি করছি। আপনার যদি প্রতিক্রিয়া থাকে বা কোনো সমস্যার সম্মুখীন হন, তাহলে অনুগ্রহ করে একটি প্রতিবেদন দাখিল করে আমাদের জানান।

আপনি যদি ক্র্যাশ-মুক্ত মেট্রিক্স (যেমন ক্র্যাশ-মুক্ত ব্যবহারকারী এবং সেশন) এবং/অথবা বেগ সতর্কতা দেখতে না পান, তাহলে নিশ্চিত করুন যে আপনি ব্যবহার করছেনCrashlytics SDK v10.8.0+।

আপনি যদি ব্রেডক্রাম্ব লগ দেখতে না পান, তাহলে আমরা Google Analytics জন্য আপনার অ্যাপের কনফিগারেশন চেক করার পরামর্শ দিই। আপনি নিম্নলিখিত প্রয়োজনীয়তা পূরণ নিশ্চিত করুন:

আপনার প্রকল্পের dSYM আপলোড করতে এবং ভার্বোস আউটপুট পেতে, নিম্নলিখিতগুলি পরীক্ষা করুন:

  1. আপনার প্রজেক্টের বিল্ড ফেজে Crashlytics রান স্ক্রিপ্ট রয়েছে তা নিশ্চিত করুন, যা এক্সকোডকে বিল্ড টাইমে আপনার প্রোজেক্টের dSYM গুলি আপলোড করতে দেয় (স্ক্রিপ্ট যোগ করার নির্দেশাবলীর জন্য Initializing Crashlytics পড়ুন)। আপনার প্রোজেক্ট আপডেট করার পর, জোর করে ক্র্যাশ করুন এবং নিশ্চিত করুন যে Crashlytics ড্যাশবোর্ডে ক্র্যাশ দেখা যাচ্ছে।

  2. আপনি যদি Firebase কনসোলে একটি "অনুপস্থিত dSYM" সতর্কতা দেখতে পান, তাহলে Xcode পরীক্ষা করে নিশ্চিত করুন যে এটি বিল্ডের জন্য সঠিকভাবে dSYM তৈরি করছে

  3. যদি Xcode সঠিকভাবে dSYMs তৈরি করে, এবং আপনি এখনও dSYMs অনুপস্থিত দেখতে পান, তাহলে সম্ভবত dSYMগুলি আপলোড করার সময় রান স্ক্রিপ্ট টুল আটকে যাচ্ছে। এই ক্ষেত্রে, নিম্নলিখিত প্রতিটি চেষ্টা করুন:

    • আপনি Crashlytics এর সর্বশেষ সংস্করণ ব্যবহার করছেন তা নিশ্চিত করুন।

    • অনুপস্থিত dSYM ফাইল ম্যানুয়ালি আপলোড করুন:

      • বিকল্প 1: অনুপস্থিত dSYM ফাইল ধারণকারী একটি জিপ সংরক্ষণাগার আপলোড করতে dSYMs ট্যাবে কনসোল-ভিত্তিক "টেনে আনুন" বিকল্পটি ব্যবহার করুন৷
      • বিকল্প 2: dSYM ট্যাবে প্রদত্ত UUID-এর জন্য অনুপস্থিত dSYM ফাইলগুলি আপলোড করতে upload-symbols স্ক্রিপ্ট ব্যবহার করুন।
  4. আপনি যদি অনুপস্থিত dSYM দেখতে থাকেন, বা আপলোডগুলি এখনও অসফল হয়, Firebase সহায়তার সাথে যোগাযোগ করুন এবং আপনার লগগুলি অন্তর্ভুক্ত করতে ভুলবেন না।

যদি আপনার স্ট্যাকের ট্রেসগুলি খারাপভাবে প্রতীকী বলে মনে হয় তবে নিম্নলিখিতগুলি পরীক্ষা করুন:

  • যদি আপনার অ্যাপের লাইব্রেরির ফ্রেমে আপনার অ্যাপের কোডের রেফারেন্স না থাকে, তাহলে তা নিশ্চিত করুন -fomit-frame-pointer একটি সংকলন পতাকা হিসাবে সেট করা নেই।

  • আপনি যদি আপনার অ্যাপের লাইব্রেরির জন্য বেশ কয়েকটি (Missing) ফ্রেম দেখতে পান, তাহলে Firebase কনসোলের Crashlytics dSYMs ট্যাবে অনুপস্থিত (প্রভাবিত অ্যাপ সংস্করণের জন্য) তালিকাভুক্ত ঐচ্ছিক dSYM আছে কিনা তা পরীক্ষা করুন। যদি তাই হয়, এই পৃষ্ঠায় dSYM অনুপস্থিত/আপলোড হচ্ছে না প্রায়শই জিজ্ঞাসিত প্রশ্নাবলীতে "অনুপস্থিত dSYM সতর্কতা" সমস্যা সমাধানের পদক্ষেপটি অনুসরণ করুন৷ মনে রাখবেন যে এই dSYMগুলি আপলোড করা ইতিমধ্যে ঘটে যাওয়া ক্র্যাশগুলিকে প্রতীকী করবে না, তবে এটি ভবিষ্যতে ক্র্যাশগুলির জন্য প্রতীকীকরণ নিশ্চিত করতে সহায়তা করবে৷

নোটগুলি প্রকল্পের সদস্যদের প্রশ্ন, স্ট্যাটাস আপডেট ইত্যাদির সাথে নির্দিষ্ট বিষয়ে মন্তব্য করার অনুমতি দেয়।

যখন কোনও প্রকল্প সদস্য একটি নোট পোস্ট করে, তখন এটি তাদের Google অ্যাকাউন্টের ইমেলের সাথে লেবেল করা হয়। এই ইমেল ঠিকানাটি নোটের সাথে, নোটটি দেখার অ্যাক্সেস সহ সমস্ত প্রকল্প সদস্যদের কাছে দৃশ্যমান।

নিম্নলিখিতগুলি নোটগুলি দেখতে, লিখতে এবং মুছতে প্রয়োজনীয় অ্যাক্সেস বর্ণনা করে:

ক্র্যাশ-মুক্ত মেট্রিক্স বুঝুন দেখুন।

নোটগুলি প্রকল্পের সদস্যদের প্রশ্ন, স্ট্যাটাস আপডেট ইত্যাদির সাথে নির্দিষ্ট বিষয়ে মন্তব্য করার অনুমতি দেয়।

যখন কোনও প্রকল্প সদস্য একটি নোট পোস্ট করে, তখন এটি তাদের Google অ্যাকাউন্টের ইমেলের সাথে লেবেল করা হয়। এই ইমেল ঠিকানাটি নোটের সাথে, নোটটি দেখার অ্যাক্সেস সহ সমস্ত প্রকল্প সদস্যদের কাছে দৃশ্যমান।

নিম্নলিখিতগুলি নোটগুলি দেখতে, লিখতে এবং মুছতে প্রয়োজনীয় অ্যাক্সেস বর্ণনা করে:

ইন্টিগ্রেশন

আপনার প্রোজেক্ট যদি Google Mobile Ads SDK-এর পাশাপাশি Crashlytics ব্যবহার করে, তাহলে ব্যতিক্রম হ্যান্ডলারদের নিবন্ধন করার সময় ক্র্যাশ রিপোর্টাররা হস্তক্ষেপ করছে। সমস্যা সমাধানের জন্য, disableSDKCrashReporting কল করে Mobile Ads SDK-এ ক্র্যাশ রিপোর্টিং বন্ধ করুন।

আপনি BigQuery-এর সাথে Crashlytics লিঙ্ক করার পরে, আপনার তৈরি করা নতুন ডেটাসেটগুলি স্বয়ংক্রিয়ভাবে মার্কিন যুক্তরাষ্ট্রে অবস্থিত হবে, আপনার Firebase প্রকল্পের অবস্থান নির্বিশেষে।

প্ল্যাটফর্ম সমর্থন

হ্যাঁ, আপনি macOS এবং tvOS প্রকল্পগুলিতে Crashlytics প্রয়োগ করতে পারেন। Google Analytics এর জন্য Firebase SDK-এর v8.9.0+ অন্তর্ভুক্ত করা নিশ্চিত করুন যাতে Google Analytics (ক্র্যাশ-মুক্ত ব্যবহারকারী, সর্বশেষ প্রকাশ, বেগ সতর্কতা এবং ব্রেডক্রাম্ব লগ) দ্বারা সংগৃহীত মেট্রিক্সে ক্র্যাশগুলি অ্যাক্সেস করতে পারে।

আপনি এখন একটি একক ফায়ারবেস প্রজেক্টে একাধিক অ্যাপের ক্র্যাশ রিপোর্ট করতে পারেন, এমনকি যখন অ্যাপগুলি বিভিন্ন Apple প্ল্যাটফর্মের জন্য তৈরি করা হয় (যেমন, iOS, tvOS, এবং Mac ক্যাটালিস্ট)। পূর্বে, যদি একই বান্ডেল আইডি থাকে তবে আপনাকে পৃথক ফায়ারবেস প্রকল্পগুলিতে অ্যাপগুলিকে আলাদা করতে হবে।

প্রত্যাবর্তিত সমস্যা

আপনি পূর্বে সমস্যাটি বন্ধ করার সময় একটি সমস্যাটি রিগ্রেশন হয়েছে কিন্তু Crashlytics একটি নতুন প্রতিবেদন পায় যে সমস্যাটি আবার ঘটেছে। Crashlytics স্বয়ংক্রিয়ভাবে এই প্রত্যাবর্তিত সমস্যাগুলি পুনরায় খোলে যাতে আপনি সেগুলিকে আপনার অ্যাপের জন্য উপযুক্ত হিসাবে সমাধান করতে পারেন।

এখানে একটি উদাহরণের দৃশ্য যা ব্যাখ্যা করে যে কীভাবে Crashlytics একটি সমস্যাকে রিগ্রেশন হিসাবে শ্রেণীবদ্ধ করে:

  1. প্রথমবারের মতো, Crashlytics ক্র্যাশ "A" সম্পর্কে একটি ক্র্যাশ রিপোর্ট পায়৷ Crashlytics সেই ক্র্যাশের জন্য একটি সংশ্লিষ্ট সমস্যা খোলে (ইস্যু "A")।
  2. আপনি এই বাগটি দ্রুত ঠিক করুন, সমস্যা "A" বন্ধ করুন এবং তারপর আপনার অ্যাপের একটি নতুন সংস্করণ প্রকাশ করুন৷
  3. আপনি সমস্যাটি বন্ধ করার পরে Crashlytics ইস্যু "A" সম্পর্কে আরেকটি প্রতিবেদন পায়।
    • প্রতিবেদনটি যদি এমন কোনো অ্যাপ সংস্করণ থেকে হয় যা Crashlytics জানত যে আপনি যখন সমস্যাটি বন্ধ করেছিলেন (অর্থাৎ সংস্করণটি কোনও ক্র্যাশের জন্য একটি ক্র্যাশ রিপোর্ট পাঠিয়েছিল), তাহলে Crashlytics সমস্যাটিকে প্রত্যাবর্তন হিসাবে বিবেচনা করবে না। বিষয়টি বন্ধ থাকবে।
    • প্রতিবেদনটি যদি এমন কোনো অ্যাপ সংস্করণ থেকে হয় যা Crashlytics জানত না যে আপনি কখন সমস্যাটি বন্ধ করেছিলেন (অর্থাৎ সংস্করণটি কোনও ক্র্যাশের জন্য কোনও ক্র্যাশ রিপোর্ট পাঠায়নি ), তাহলে Crashlytics সমস্যাটিকে প্রত্যাবর্তন বলে বিবেচনা করে এবং সমস্যাটি আবার খুলবে।

যখন একটি সমস্যা রিগ্রেস হয়, তখন আমরা একটি রিগ্রেশন শনাক্তকরণ সতর্কতা পাঠাই এবং সমস্যাটিতে একটি রিগ্রেশন সিগন্যাল যোগ করি যাতে আপনাকে জানানো হয় যে Crashlytics সমস্যাটি আবার খুলেছে। আপনি যদি আমাদের রিগ্রেশন অ্যালগরিদমের কারণে কোনো সমস্যা পুনরায় খুলতে না চান, তাহলে সমস্যাটিকে বন্ধ করার পরিবর্তে "নিঃশব্দ" করুন।

যদি কোনও রিপোর্ট কোনও পুরানো অ্যাপ সংস্করণ থেকে হয় যেটি আপনি সমস্যাটি বন্ধ করার সময় কোনও ক্র্যাশ রিপোর্ট পাঠাননি, তাহলে Crashlytics সমস্যাটিকে প্রত্যাবর্তন বলে বিবেচনা করে এবং সমস্যাটি আবার খুলবে।

এই পরিস্থিতি নিম্নলিখিত পরিস্থিতিতে ঘটতে পারে: আপনি একটি বাগ সংশোধন করেছেন এবং আপনার অ্যাপের একটি নতুন সংস্করণ প্রকাশ করেছেন, কিন্তু আপনার কাছে এখনও বাগ সংশোধন ছাড়াই পুরানো সংস্করণে ব্যবহারকারীরা আছে৷ যদি, ঘটনাক্রমে, আপনি সমস্যাটি বন্ধ করার সময় সেই পুরানো সংস্করণগুলির মধ্যে একটি কখনই কোনও ক্র্যাশ রিপোর্ট না পাঠায়, এবং সেই ব্যবহারকারীরা বাগটির সম্মুখীন হতে শুরু করে, তাহলে সেই ক্র্যাশ রিপোর্টগুলি একটি প্রত্যাবর্তিত সমস্যাকে ট্রিগার করবে৷

আপনি যদি আমাদের রিগ্রেশন অ্যালগরিদমের কারণে কোনো সমস্যা পুনরায় খুলতে না চান, তাহলে সমস্যাটিকে বন্ধ করার পরিবর্তে "নিঃশব্দ" করুন।