এই পৃষ্ঠাটি সমস্যা সমাধানের সহায়তা এবং Crashlytics ব্যবহার সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্নের উত্তর প্রদান করে। আপনি যা খুঁজছেন তা যদি খুঁজে না পান বা অতিরিক্ত সাহায্যের প্রয়োজন হয়, তাহলে Firebase সহায়তার সাথে যোগাযোগ করুন।
সাধারণ সমস্যা সমাধান/প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
Firebase কনসোলে আপনার Issue টেবিলে তালিকাভুক্ত সমস্যাগুলির জন্য আপনি দুটি ভিন্ন ফর্ম্যাট লক্ষ্য করতে পারেন। এবং আপনার কিছু সমস্যার মধ্যে "ভেরিয়েন্ট" নামক একটি বৈশিষ্ট্যও লক্ষ্য করতে পারেন। এখানে কেন!
২০২৩ সালের গোড়ার দিকে, আমরা ইভেন্টগুলিকে গ্রুপ করার জন্য একটি উন্নত বিশ্লেষণ ইঞ্জিন, সেইসাথে একটি আপডেটেড ডিজাইন এবং নতুন ইস্যুগুলির জন্য কিছু উন্নত বৈশিষ্ট্য (যেমন ভেরিয়েন্ট!) চালু করেছি। সমস্ত বিবরণের জন্য আমাদের সাম্প্রতিক ব্লগ পোস্টটি দেখুন, তবে হাইলাইটগুলির জন্য আপনি নীচে পড়তে পারেন।
Crashlytics আপনার অ্যাপের সমস্ত ইভেন্ট (যেমন ক্র্যাশ, নন-ফ্যাটাল এবং ANR) বিশ্লেষণ করে এবং ইস্যু নামক ইভেন্টের গ্রুপ তৈরি করে — একটি ইস্যুর সমস্ত ইভেন্টের ব্যর্থতার একটি সাধারণ বিন্দু থাকে।
এই সমস্যাগুলির মধ্যে ইভেন্টগুলিকে গোষ্ঠীভুক্ত করার জন্য, উন্নত বিশ্লেষণ ইঞ্জিন এখন ইভেন্টের অনেক দিক বিবেচনা করে, যার মধ্যে রয়েছে স্ট্যাক ট্রেসের ফ্রেম, ব্যতিক্রম বার্তা, ত্রুটি কোড এবং অন্যান্য প্ল্যাটফর্ম বা ত্রুটি ধরণের বৈশিষ্ট্য।
তবে, এই ইভেন্ট গ্রুপের মধ্যে, ব্যর্থতার দিকে পরিচালিত স্ট্যাক ট্রেসগুলি ভিন্ন হতে পারে। একটি ভিন্ন স্ট্যাক ট্রেস একটি ভিন্ন মূল কারণকে বোঝাতে পারে। একটি সমস্যার মধ্যে এই সম্ভাব্য পার্থক্যটি উপস্থাপন করার জন্য, আমরা এখন সমস্যার মধ্যে ভেরিয়েন্ট তৈরি করি - প্রতিটি ভেরিয়েন্ট হল একটি সমস্যার ইভেন্টগুলির একটি উপ-গ্রুপ যার একই ব্যর্থতা বিন্দু এবং একই রকম স্ট্যাক ট্রেস রয়েছে। ভেরিয়েন্টগুলির সাহায্যে, আপনি একটি সমস্যার মধ্যে সবচেয়ে সাধারণ স্ট্যাক ট্রেসগুলি ডিবাগ করতে পারেন এবং নির্ধারণ করতে পারেন যে বিভিন্ন মূল কারণ ব্যর্থতার দিকে পরিচালিত করছে কিনা।
এই উন্নতিগুলির সাথে আপনি যা অভিজ্ঞতা পাবেন তা এখানে:
সমস্যা সারির মধ্যে পুনর্নির্মিত মেটাডেটা দেখানো হয়েছে
আপনার অ্যাপে সমস্যাগুলি বোঝা এবং বিচার করা এখন আরও সহজ।কম ডুপ্লিকেট সমস্যা
লাইন নম্বর পরিবর্তনের ফলে নতুন কোনও সমস্যা হয় না।বিভিন্ন মূল কারণ সহ জটিল সমস্যাগুলির সহজে ডিবাগিং
কোনও সমস্যার মধ্যে সবচেয়ে সাধারণ স্ট্যাক ট্রেস ডিবাগ করতে ভেরিয়েন্ট ব্যবহার করুন।আরও অর্থপূর্ণ সতর্কতা এবং সংকেত
একটি নতুন সমস্যা আসলে একটি নতুন বাগের প্রতিনিধিত্ব করে।আরও শক্তিশালী অনুসন্ধান
প্রতিটি ইস্যুতে আরও অনুসন্ধানযোগ্য মেটাডেটা থাকে, যেমন ব্যতিক্রমের ধরণ এবং প্যাকেজের নাম।
এই উন্নতিগুলি কীভাবে কার্যকর হচ্ছে তা এখানে দেওয়া হল:
যখন আমরা আপনার অ্যাপ থেকে নতুন ইভেন্ট পাব, তখন আমরা পরীক্ষা করব যে সেগুলি বিদ্যমান কোনও সমস্যার সাথে মেলে কিনা।
যদি কোনও মিল না থাকে, তাহলে আমরা স্বয়ংক্রিয়ভাবে ইভেন্টে আমাদের আরও স্মার্ট ইভেন্ট-গ্রুপিং অ্যালগরিদম প্রয়োগ করব এবং পুনর্নির্মিত মেটাডেটা ডিজাইনের সাথে একটি নতুন সমস্যা তৈরি করব।
আমাদের ইভেন্ট গ্রুপিং-এ এটিই প্রথম বড় আপডেট। যদি আপনার কোন প্রতিক্রিয়া থাকে বা কোন সমস্যার সম্মুখীন হন, তাহলে অনুগ্রহ করে একটি প্রতিবেদন দাখিল করে আমাদের জানান।
যদি আপনি ব্রেডক্রাম্ব লগ দেখতে না পান, তাহলে আমরা আপনাকে Google Analytics এর জন্য আপনার অ্যাপের কনফিগারেশন পরীক্ষা করার পরামর্শ দিচ্ছি। নিশ্চিত করুন যে আপনি নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করছেন:
আপনি আপনার Firebase প্রকল্পে Google Analytics সক্ষম করেছেন ।
আপনি Google Analytics এর জন্য ডেটা শেয়ারিং সক্ষম করেছেন। আপনার Analytics ডেটা শেয়ারিং সেটিংস পরিচালনা করুন বিভাগে এই সেটিং সম্পর্কে আরও জানুন।
তুমি করেছোGoogle Analytics জন্য ফায়ারবেস SDK যোগ করা হয়েছেআপনার অ্যাপে। এই SDKটি Crashlytics SDK এর সাথে যোগ করতে হবে।
তুমি ব্যবহার করছোসর্বশেষ Firebase SDK সংস্করণআপনার অ্যাপে ব্যবহৃত সমস্ত পণ্যের জন্য।
যদি আপনি বেগের সতর্কতা দেখতে না পান, তাহলে নিশ্চিত করুন যে আপনি ব্যবহার করছেনক্র্যাশলিটিক্স SDK ১১.৭.০+।
যদি আপনি ক্র্যাশ-মুক্ত মেট্রিক্স (যেমন ক্র্যাশ-মুক্ত ব্যবহারকারী এবং সেশন) দেখতে না পান অথবা অবিশ্বস্ত মেট্রিক্স দেখতে না পান, তাহলে নিম্নলিখিতগুলি পরীক্ষা করুন:
নিশ্চিত করুন যে আপনি ব্যবহার করছেনক্র্যাশলিটিক্স SDK ১১.৭.০+।
নিশ্চিত করুন যে আপনার ডেটা সংগ্রহের সেটিংস আপনার ক্র্যাশ-মুক্ত মেট্রিক্সের গুণমানের উপর প্রভাব ফেলছে না:
যদি আপনি স্বয়ংক্রিয় ক্র্যাশ রিপোর্টিং অক্ষম করে অপ্ট-ইন রিপোর্টিং সক্ষম করেন , তাহলে ক্র্যাশ তথ্য কেবলমাত্র সেই ব্যবহারকারীদের কাছ থেকে Crashlytics এ পাঠানো যাবে যারা স্পষ্টভাবে ডেটা সংগ্রহে অংশগ্রহণ করেছেন। সুতরাং, ক্র্যাশ-মুক্ত মেট্রিক্সের নির্ভুলতা প্রভাবিত হবে কারণ Crashlytics শুধুমাত্র এই অপ্ট-ইন করা ব্যবহারকারীদের কাছ থেকে ক্র্যাশ তথ্য থাকে (আপনার সমস্ত ব্যবহারকারীর পরিবর্তে)। এর অর্থ হল আপনার ক্র্যাশ-মুক্ত মেট্রিক্স কম নির্ভরযোগ্য এবং আপনার অ্যাপের সামগ্রিক স্থিতিশীলতার প্রতিফলন কম হতে পারে।
যদি আপনার স্বয়ংক্রিয় ডেটা সংগ্রহ অক্ষম থাকে, তাহলে আপনি Crashlytics এ ডিভাইসে ক্যাশ করা রিপোর্ট পাঠাতে
sendUnsentReportsব্যবহার করতে পারেন। এই পদ্ধতি ব্যবহার করলে Crashlytics এ ক্র্যাশ ডেটা পাঠানো হবে, কিন্তু সেশন ডেটা পাঠানো হবে না যার ফলে কনসোল চার্টগুলি ক্র্যাশ-মুক্ত মেট্রিক্সের জন্য কম বা শূন্য মান দেখাবে।
ক্র্যাশ-মুক্ত মেট্রিক্স বুঝুন দেখুন।
যদি আপনি Unity IL2CPP ব্যবহার করেন এবং আপনি অপ্রতীকী স্ট্যাক ট্রেস দেখতে পান, তাহলে নিম্নলিখিতগুলি চেষ্টা করে দেখুন:
নিশ্চিত করুন যে আপনি Crashlytics Unity SDK এর v8.6.1 বা তার উচ্চতর সংস্করণ ব্যবহার করছেন।
আপনার প্রতীক ফাইল তৈরি এবং আপলোড করার জন্য নিশ্চিত করুন যে আপনি Firebase CLI
crashlytics:symbols:uploadকমান্ডের জন্য সেট আপ এবং চালাচ্ছেন।প্রতিবার যখন আপনি একটি রিলিজ বিল্ড তৈরি করবেন অথবা Firebase কনসোলে প্রতীকী স্ট্যাক ট্রেস দেখতে চান এমন যেকোনো বিল্ড তৈরি করবেন, তখন আপনাকে এই CLI কমান্ডটি চালাতে হবে। আরও জানুন "পঠনযোগ্য ক্র্যাশ রিপোর্ট পান" পৃষ্ঠায়।
হ্যাঁ, Crashlytics আপনার IL2CPP ব্যবহারকারী অ্যাপগুলির জন্য প্রতীকী স্ট্যাক ট্রেস প্রদর্শন করতে পারে। এই ক্ষমতাটি Android বা Apple প্ল্যাটফর্মে প্রকাশিত অ্যাপগুলির জন্য উপলব্ধ। আপনাকে যা করতে হবে তা এখানে:
নিশ্চিত করুন যে আপনি Crashlytics Unity SDK এর v8.6.0 বা উচ্চতর সংস্করণ ব্যবহার করছেন।
আপনার প্ল্যাটফর্মের জন্য প্রয়োজনীয় কাজগুলি সম্পন্ন করুন:
অ্যাপল প্ল্যাটফর্ম অ্যাপের জন্য : কোনও বিশেষ পদক্ষেপের প্রয়োজন নেই। অ্যাপল প্ল্যাটফর্ম অ্যাপের জন্য, ফায়ারবেস ইউনিটি এডিটর প্লাগইন স্বয়ংক্রিয়ভাবে আপনার এক্সকোড প্রকল্পকে প্রতীক আপলোড করার জন্য কনফিগার করে।
অ্যান্ড্রয়েড অ্যাপের জন্য : আপনার প্রতীক ফাইল তৈরি এবং আপলোড করার জন্য নিশ্চিত করুন যে আপনি Firebase CLI
crashlytics:symbols:uploadকমান্ডের জন্য সেট আপ করেছেন এবং চালাচ্ছেন।প্রতিবার যখন আপনি একটি রিলিজ বিল্ড তৈরি করবেন অথবা Firebase কনসোলে প্রতীকী স্ট্যাক ট্রেস দেখতে চান এমন যেকোনো বিল্ড তৈরি করবেন, তখন আপনাকে এই CLI কমান্ডটি চালাতে হবে। আরও জানুন "পঠনযোগ্য ক্র্যাশ রিপোর্ট পান" পৃষ্ঠায়।
নোট প্রকল্পের সদস্যদের প্রশ্ন, স্ট্যাটাস আপডেট ইত্যাদির মাধ্যমে নির্দিষ্ট বিষয়ে মন্তব্য করার সুযোগ দেয়।
যখন কোনও প্রকল্প সদস্য একটি নোট পোস্ট করেন, তখন এটি তাদের Google অ্যাকাউন্টের ইমেল ঠিকানা দিয়ে লেবেল করা হয়। এই ইমেল ঠিকানাটি, নোটের সাথে, সমস্ত প্রকল্প সদস্যদের কাছে দৃশ্যমান হবে যাদের নোটটি দেখার অ্যাক্সেস রয়েছে।
নোট দেখতে, লিখতে এবং মুছে ফেলার জন্য প্রয়োজনীয় অ্যাক্সেসের বর্ণনা নিচে দেওয়া হল:
নিম্নলিখিত যেকোনো ভূমিকা সম্পন্ন প্রকল্পের সদস্যরা বিদ্যমান নোটগুলি দেখতে এবং মুছে ফেলতে এবং কোনও বিষয়ে নতুন নোট লিখতে পারবেন।
- প্রকল্পের মালিক বা সম্পাদক , ফায়ারবেস অ্যাডমিন , কোয়ালিটি অ্যাডমিন , অথবা ক্র্যাশলিটিক্স অ্যাডমিন
নিম্নলিখিত যেকোনো ভূমিকায় থাকা প্রকল্পের সদস্যরা কোনও বিষয়ে পোস্ট করা নোট দেখতে পারবেন, কিন্তু তারা কোনও নোট মুছতে বা লিখতে পারবেন না।
- প্রজেক্ট ভিউয়ার , ফায়ারবেস ভিউয়ার , কোয়ালিটি ভিউয়ার , অথবা ক্র্যাশলিটিক্স ভিউয়ার
ইন্টিগ্রেশন
যদি আপনার প্রোজেক্টে Google Mobile Ads SDK-এর পাশাপাশি Crashlytics ব্যবহার করা হয়, তাহলে সম্ভবত ক্র্যাশ রিপোর্টাররা ব্যতিক্রম হ্যান্ডলার নিবন্ধনের সময় হস্তক্ষেপ করছে। সমস্যাটি সমাধানের জন্য, disableSDKCrashReporting কল করে Mobile Ads SDK-তে ক্র্যাশ রিপোর্টিং বন্ধ করুন।
Crashlytics BigQuery এর সাথে লিঙ্ক করার পর, আপনার তৈরি করা নতুন ডেটাসেটগুলি স্বয়ংক্রিয়ভাবে মার্কিন যুক্তরাষ্ট্রে অবস্থিত হবে, আপনার Firebase প্রকল্পের অবস্থান নির্বিশেষে।
পিছিয়ে পড়া সমস্যা
আপনি যখন আগে সমস্যাটি বন্ধ করে দিয়েছিলেন তখন একটি সমস্যা রিগ্রেশন হয়েছিল কিন্তু Crashlytics একটি নতুন রিপোর্ট পেয়েছে যে সমস্যাটি আবার ঘটেছে। Crashlytics স্বয়ংক্রিয়ভাবে এই রিগ্রেশন করা সমস্যাগুলি পুনরায় খুলবে যাতে আপনি আপনার অ্যাপের জন্য উপযুক্ত হিসাবে সেগুলি সমাধান করতে পারেন।
এখানে একটি উদাহরণ দেওয়া হল যা ব্যাখ্যা করে যে কীভাবে Crashlytics একটি সমস্যাকে রিগ্রেশন হিসেবে শ্রেণীবদ্ধ করে:
- প্রথমবারের মতো, Crashlytics Crash "A" সম্পর্কে একটি ক্র্যাশ রিপোর্ট পেয়েছে। Crashlytics সেই ক্র্যাশের জন্য একটি সংশ্লিষ্ট সমস্যা (ইস্যু "A") খোলে।
- আপনি দ্রুত এই বাগটি ঠিক করুন, "A" সমস্যাটি বন্ধ করুন, এবং তারপর আপনার অ্যাপের একটি নতুন সংস্করণ প্রকাশ করুন।
- আপনি সমস্যাটি বন্ধ করার পরে, Crashlytics "A" ইস্যু সম্পর্কে আরেকটি প্রতিবেদন পায়।
- যদি রিপোর্টটি এমন কোনও অ্যাপ ভার্সন থেকে আসে যা Crashlytics আপনার সমস্যাটি বন্ধ করার সময় জানত (অর্থাৎ সংস্করণটি কোনও ক্র্যাশের জন্য একটি ক্র্যাশ রিপোর্ট পাঠিয়েছিল), তাহলে Crashlytics সমস্যাটিকে রিগ্রেসড বলে বিবেচনা করবে না। সমস্যাটি বন্ধ থাকবে।
- যদি রিপোর্টটি এমন কোনও অ্যাপ ভার্সন থেকে আসে যা Crashlytics আপনার সমস্যাটি বন্ধ করার সময় জানত না (অর্থাৎ সংস্করণটি কোনও ক্র্যাশের জন্য কোনও ক্র্যাশ রিপোর্ট পাঠায়নি ), তাহলে Crashlytics সমস্যাটিকে পিছিয়ে গেছে বলে মনে করবে এবং সমস্যাটি আবার খুলবে।
যখন কোনও সমস্যা রিগ্রেস হয়, তখন আমরা একটি রিগ্রেশন ডিটেকশন অ্যালার্ট পাঠাই এবং সমস্যাটিতে একটি রিগ্রেশন সিগন্যাল যোগ করি যাতে আপনাকে জানানো হয় যে Crashlytics সমস্যাটি পুনরায় খুলেছে। আমাদের রিগ্রেশন অ্যালগরিদমের কারণে যদি আপনি কোনও সমস্যা পুনরায় খুলতে না চান, তাহলে সমস্যাটি বন্ধ করার পরিবর্তে "মিউট" করুন।
যদি কোনও প্রতিবেদন এমন কোনও পুরানো অ্যাপ সংস্করণ থেকে আসে যা সমস্যাটি বন্ধ করার সময় কখনও কোনও ক্র্যাশ রিপোর্ট পাঠায়নি, তাহলে Crashlytics সমস্যাটিকে পিছিয়ে গেছে বলে মনে করে এবং সমস্যাটি পুনরায় খুলবে।
এই পরিস্থিতি নিম্নলিখিত পরিস্থিতিতে ঘটতে পারে: আপনি একটি বাগ সংশোধন করেছেন এবং আপনার অ্যাপের একটি নতুন সংস্করণ প্রকাশ করেছেন, কিন্তু আপনার এখনও পুরানো সংস্করণগুলিতে এমন ব্যবহারকারী আছেন যাদের বাগ সংশোধন করা হয়নি। যদি, দৈবক্রমে, সমস্যাটি বন্ধ করার সময় সেই পুরানো সংস্করণগুলির মধ্যে একটি কখনও কোনও ক্র্যাশ রিপোর্ট না পাঠায় এবং সেই ব্যবহারকারীরা বাগটির সম্মুখীন হতে শুরু করে, তাহলে সেই ক্র্যাশ রিপোর্টগুলি একটি রিগ্রেসড সমস্যা তৈরি করবে।
আমাদের রিগ্রেশন অ্যালগরিদমের কারণে যদি আপনি কোনও সমস্যা পুনরায় খুলতে না চান, তাহলে সমস্যাটি বন্ধ করার পরিবর্তে "মিউট" করুন।
ধরা না পড়া ব্যতিক্রমগুলিকে মারাত্মক হিসাবে রিপোর্ট করা
Crashlytics ধরা না পড়া ব্যতিক্রমগুলিকে মারাত্মক হিসাবে রিপোর্ট করতে পারে (Unity SDK এর v10.4.0 দিয়ে শুরু)। নিম্নলিখিত FAQ গুলি এই বৈশিষ্ট্যটি ব্যবহারের যুক্তি এবং সর্বোত্তম অনুশীলনগুলি ব্যাখ্যা করতে সহায়তা করে।
ধরা না পড়া ব্যতিক্রমগুলিকে মারাত্মক হিসাবে রিপোর্ট করার মাধ্যমে, আপনি আরও বাস্তবসম্মত ইঙ্গিত পাবেন যে কোন ব্যতিক্রমগুলির ফলে গেমটি খেলা যাবে না - এমনকি যদি অ্যাপটি চলতে থাকে।
মনে রাখবেন যে আপনি যদি মারাত্মক দুর্ঘটনার প্রতিবেদন করা শুরু করেন, তাহলে আপনার ক্র্যাশ-মুক্ত ব্যবহারকারীর (CFU) শতাংশ সম্ভবত হ্রাস পাবে, তবে CFU মেট্রিক আপনার অ্যাপের সাথে শেষ ব্যবহারকারীদের অভিজ্ঞতার আরও প্রতিনিধিত্ব করবে।
Crashlytics যাতে কোনও ধরা না পড়া ব্যতিক্রমকে মারাত্মক হিসেবে রিপোর্ট করতে পারে, তার জন্য নিম্নলিখিত দুটি শর্ত অবশ্যই পূরণ করতে হবে:
আপনার অ্যাপে ইনিশিয়ালাইজেশনের সময়,
ReportUncaughtExceptionsAsFatalপ্রোপার্টিটিtrueতে সেট করতে হবে ।আপনার অ্যাপ (অথবা অন্তর্ভুক্ত লাইব্রেরি) এমন একটি ব্যতিক্রম দেয় যা ধরা পড়ে না। এমন একটি ব্যতিক্রম যা তৈরি করা হয়েছে, কিন্তু থ্রো করা হয়নি , তাকে ধরা হয়নি বলে মনে করা হয়।
যখন আপনি আপনার ধরা না পড়া ব্যতিক্রমগুলিকে মারাত্মক হিসাবে রিপোর্ট পেতে শুরু করেন, তখন এই ধরা না পড়া ব্যতিক্রমগুলি পরিচালনা করার জন্য এখানে কিছু বিকল্প রয়েছে:
- এই অধরা ব্যতিক্রমগুলিকে কীভাবে ধরা এবং পরিচালনা করা শুরু করবেন তা বিবেচনা করুন।
- ইউনিটি ডিবাগ কনসোল এবং Crashlytics ব্যতিক্রম লগ করার জন্য বিভিন্ন বিকল্প বিবেচনা করুন।
থ্রো করা ব্যতিক্রমগুলি ধরুন এবং পরিচালনা করুন
অপ্রত্যাশিত বা ব্যতিক্রমী অবস্থা প্রতিফলিত করার জন্য ব্যতিক্রমগুলি তৈরি এবং নিক্ষেপ করা হয়। একটি নিক্ষেপিত ব্যতিক্রম দ্বারা প্রতিফলিত সমস্যাগুলি সমাধান করার জন্য প্রোগ্রামটিকে একটি পরিচিত অবস্থায় ফিরিয়ে আনা জড়িত (একটি প্রক্রিয়া যা ব্যতিক্রম হ্যান্ডলিং নামে পরিচিত)।
প্রোগ্রামটিকে একটি পরিচিত অবস্থায় ফিরিয়ে আনা না গেলে, সমস্ত পূর্বাভাসিত ব্যতিক্রমগুলি ধরা এবং পরিচালনা করা সর্বোত্তম অনুশীলন।
কোন ধরণের ব্যতিক্রম ধরা পড়বে এবং কোন কোড দ্বারা পরিচালিত হবে তা নিয়ন্ত্রণ করতে, try-catch ব্লকে এমন কোড মোড়ানো হবে যা ব্যতিক্রম তৈরি করতে পারে । নিশ্চিত করুন যে catch বিবৃতিতে শর্তগুলি যতটা সম্ভব সংকীর্ণ যাতে নির্দিষ্ট ব্যতিক্রমগুলি যথাযথভাবে পরিচালনা করা যায়।
ইউনিটি বা Crashlytics ব্যতিক্রম লগ করুন
সমস্যাটি ডিবাগ করতে সাহায্য করার জন্য ইউনিটি বা Crashlytics ব্যতিক্রম রেকর্ড করার একাধিক উপায় রয়েছে।
Crashlytics ব্যবহার করার সময়, এখানে দুটি সবচেয়ে সাধারণ এবং প্রস্তাবিত বিকল্প রয়েছে:
বিকল্প ১: ইউনিটি কনসোলে প্রিন্ট করুন, কিন্তু ডেভেলপমেন্ট বা সমস্যা সমাধানের সময় Crashlytics এ রিপোর্ট করবেন না।
-
Debug.Log(exception),Debug.LogWarning(exception), এবংDebug.LogError(exception)ব্যবহার করে Unity কনসোলে প্রিন্ট করুন যা ব্যতিক্রমের বিষয়বস্তু ইউনিটি কনসোলে প্রিন্ট করে এবং ব্যতিক্রমটি পুনরায় থ্রো করে না।
-
বিকল্প ২: নিম্নলিখিত পরিস্থিতিতে Crashlytics ড্যাশবোর্ডে একত্রিত প্রতিবেদনের জন্য Crashlytics এ আপলোড করুন:
- যদি কোনও ব্যতিক্রম লগিং করে পরবর্তী কোনও সম্ভাব্য Crashlytics ইভেন্ট ডিবাগ করার যোগ্য হয়, তাহলে
Crashlytics.Log(exception.ToString())ব্যবহার করুন। - যদি ধরা পড়া এবং পরিচালনা করা সত্ত্বেও কোনও ব্যতিক্রম Crashlytics কে রিপোর্ট করা হয়, তাহলে
Crashlytics.LogException(exception)ব্যবহার করে এটিকে একটি অ-মারাত্মক ঘটনা হিসেবে লগ করুন।
- যদি কোনও ব্যতিক্রম লগিং করে পরবর্তী কোনও সম্ভাব্য Crashlytics ইভেন্ট ডিবাগ করার যোগ্য হয়, তাহলে
তবে, যদি আপনি ইউনিটি ক্লাউড ডায়াগনস্টিকসে কোনও মারাত্মক ঘটনা ম্যানুয়ালি রিপোর্ট করতে চান, তাহলে আপনি Debug.LogException ব্যবহার করতে পারেন। এই বিকল্পটি অপশন ১ এর মতো ইউনিটি কনসোলে ব্যতিক্রমটি প্রিন্ট করে, তবে এটি ব্যতিক্রমটিও ছুঁড়ে ফেলে (এটি এখনও ছুঁড়ে ফেলা হয়েছে বা ধরা হয়েছে কিনা)। এটি স্থানীয়ভাবে ত্রুটিটি ছুঁড়ে ফেলে। এর অর্থ হল, এমনকি try-catch ব্লক সহ একটি Debug.LogException(exception) ফলেও একটি uncauted ব্যতিক্রম দেখা যায়।
অতএব, যদি আপনি নিম্নলিখিত সমস্ত কিছু করতে চান তবেই Debug.LogException কল করুন:
- ইউনিটি কনসোলে ব্যতিক্রমটি প্রিন্ট করতে।
- একটি মারাত্মক ঘটনা হিসেবে Crashlytics এ ব্যতিক্রমটি আপলোড করার জন্য।
- ব্যতিক্রমটি বাদ দেওয়ার জন্য, এটিকে একটি অধরা ব্যতিক্রম হিসেবে বিবেচনা করা হোক এবং এটি ইউনিটি ক্লাউড ডায়াগনস্টিকসকে রিপোর্ট করা হোক।
মনে রাখবেন, যদি আপনি ইউনিটি কনসোলে একটি ধরা পড়া ব্যতিক্রম প্রিন্ট করতে চান এবং একটি অ-মারাত্মক ইভেন্ট হিসাবে Crashlytics এ আপলোড করতে চান, তাহলে পরিবর্তে নিম্নলিখিতগুলি করুন:
try
{
methodThatThrowsMyCustomExceptionType();
}
catch(MyCustomExceptionType exception)
{
// Print the exception to the Unity console at the error level.
Debug.LogError(exception);
// Upload the exception to Crashlytics as a non-fatal event.
Crashlytics.LogException(exception); // not Debug.LogException
//
// Code that handles the exception
//
}