আপনার Firebase Crashlytics ক্র্যাশ রিপোর্ট কাস্টমাইজ করুন


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

  • আপনার অ্যাপ Google Analytics জন্য Firebase SDK ব্যবহার করলে স্বয়ংক্রিয়ভাবে ব্রেডক্রাম্ব লগ পান। এই লগগুলি আপনাকে আপনার অ্যাপে একটি Crashlytics সংগৃহীত ইভেন্ট পর্যন্ত ব্যবহারকারীর ক্রিয়াকলাপের দৃশ্যমানতা দেয়।

  • স্বয়ংক্রিয় ক্র্যাশ রিপোর্টিং বন্ধ করুন এবং আপনার ব্যবহারকারীদের জন্য অপ্ট-ইন রিপোর্টিং সক্ষম করুন । মনে রাখবেন, ডিফল্টরূপে, Crashlytics স্বয়ংক্রিয়ভাবে আপনার সমস্ত অ্যাপের ব্যবহারকারীদের জন্য ক্র্যাশ রিপোর্ট সংগ্রহ করে।

কাস্টম কী যোগ করুন

কাস্টম কীগুলি আপনাকে আপনার অ্যাপের নির্দিষ্ট অবস্থা পেতে সাহায্য করে যা ক্র্যাশের দিকে নিয়ে যায়। আপনি আপনার ক্র্যাশ রিপোর্টের সাথে নির্বিচারে কী/মান জোড়া সংযুক্ত করতে পারেন, তারপর Firebase কনসোলে ক্র্যাশ রিপোর্টগুলি অনুসন্ধান এবং ফিল্টার করতে কাস্টম কীগুলি ব্যবহার করুন৷

  • Crashlytics ড্যাশবোর্ডে , আপনি একটি কাস্টম কী মেলে এমন সমস্যাগুলি অনুসন্ধান করতে পারেন৷

  • আপনি যখন কনসোলে একটি নির্দিষ্ট সমস্যা পর্যালোচনা করছেন, আপনি প্রতিটি ইভেন্টের জন্য সংশ্লিষ্ট কাস্টম কীগুলি দেখতে পারেন ( কী সাবট্যাব) এবং এমনকি কাস্টম কী (পৃষ্ঠার শীর্ষে ফিল্টার মেনু) দ্বারা ইভেন্টগুলি ফিল্টার করতে পারেন৷

কী/মান জোড়া সেট করতে setCustomKey উদাহরণ পদ্ধতি ব্যবহার করুন। মনে রাখবেন যে কোনো আদিম বা String আর্গুমেন্ট গ্রহণ করার জন্য value প্যারামিটারের জন্য setCustomKey ওভারলোড করা হয়েছে। এখানে কিছু উদাহরণ আছে:

KotlinJava
val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("my_string_key", "foo") // String value
    key("my_bool_key", true) // boolean value
    key("my_double_key", 1.0) // double value
    key("my_float_key", 1.0f) // float value
    key("my_int_key", 1) // int value
}
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("my_string_key", "foo" /* string value */);

crashlytics.setCustomKey("my_bool_key", true /* boolean value */);

crashlytics.setCustomKey("my_double_key", 1.0 /* double value */);

crashlytics.setCustomKey("my_float_key", 1.0f /* float value */);

crashlytics.setCustomKey("my_int_key", 1 /* int value */);

আপনি কী কল করে একটি বিদ্যমান কী-এর মান পরিবর্তন করতে পারেন এবং এটিকে একটি ভিন্ন মানতে সেট করতে পারেন। যেমন:

KotlinJava
val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("current_level", 3)
    key("last_UI_action", "logged_in")
}
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("current_level", 3);
crashlytics.setCustomKey("last_UI_action", "logged_in");

setCustomKeys ইনস্ট্যান্স পদ্ধতিতে CustomKeysAndValues এর একটি উদাহরণ পাস করে বাল্কে কী/মান জোড়া যোগ করুন:

KotlinJava

Kotlin এর জন্য, বিদ্যমান কার্যকারিতা CustomKeysAndValues ​​বিল্ডার ব্যবহার করার চেয়ে সহজ।

crashlytics.setCustomKeys {
  key("str_key", "hello")
  key("bool_key", true)
  key("int_key", 1)
  key("long_key", 1L)
  key("float_key", 1.0f)
  key("double_key", 1.0)
}
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
.putString("string key", "string value")
.putString("string key 2", "string  value 2")
.putBoolean("boolean key", True)
.putBoolean("boolean key 2", False)
.putFloat("float key", 1.01)
.putFloat("float key 2", 2.02)
.build();

FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);

কাস্টম লগ বার্তা যোগ করুন

ক্র্যাশের দিকে পরিচালিত ইভেন্টগুলির জন্য নিজেকে আরও প্রসঙ্গ দিতে, আপনি আপনার অ্যাপে কাস্টম Crashlytics লগ যোগ করতে পারেন। Crashlytics লগগুলিকে আপনার ক্র্যাশ ডেটার সাথে সংযুক্ত করে এবং লগ ট্যাবের অধীনে Firebase কনসোলের Crashlytics পৃষ্ঠায় প্রদর্শন করে।

সমস্যা চিহ্নিত করতে সাহায্য করার জন্য log ব্যবহার করুন। যেমন:

KotlinJava
Firebase.crashlytics.log("message")
FirebaseCrashlytics.getInstance().log("message");

ব্যবহারকারী শনাক্তকারী সেট করুন

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

আপনার রিপোর্টে ব্যবহারকারীর আইডি যোগ করতে, প্রতিটি ব্যবহারকারীকে একটি আইডি নম্বর, টোকেন বা হ্যাশ করা মান আকারে একটি অনন্য শনাক্তকারী বরাদ্দ করুন:

KotlinJava
Firebase.crashlytics.setUserId("user123456789")
FirebaseCrashlytics.getInstance().setUserId("user123456789");

আপনি যদি এটি সেট করার পরে কখনও একটি ব্যবহারকারী শনাক্তকারী সাফ করতে চান, তাহলে মানটিকে একটি ফাঁকা স্ট্রিংয়ে পুনরায় সেট করুন। একটি ব্যবহারকারী শনাক্তকারী সাফ করা বিদ্যমান Crashlytics রেকর্ড মুছে ফেলা হয় না। আপনি যদি একটি ব্যবহারকারী আইডির সাথে যুক্ত রেকর্ড মুছে ফেলতে চান, Firebase সহায়তার সাথে যোগাযোগ করুন

(শুধুমাত্র Android NDK) NDK ক্র্যাশ রিপোর্টে মেটাডেটা যোগ করুন

NDK ক্র্যাশ রিপোর্টে মেটাডেটা যোগ করতে আপনি ঐচ্ছিকভাবে crashlytics.h হেডারটি আপনার C++ কোডে অন্তর্ভুক্ত করতে পারেন, যেমন কাস্টম কী , কাস্টম লগ , ব্যবহারকারী শনাক্তকারী । এই সমস্ত বিকল্পগুলি উপরে এই পৃষ্ঠায় বর্ণিত হয়েছে।

crashlytics.h ফায়ারবেস অ্যান্ড্রয়েড SDK গিটহাব রিপোজিটরিতে হেডার-অনলি C++ লাইব্রেরি হিসেবে উপলব্ধ।

NDK C++ API ব্যবহার করার নির্দেশাবলীর জন্য হেডার ফাইলের মন্তব্যগুলি পড়ুন।

মেমরি দুর্নীতি সমস্যা ডিবাগ করতে GWP-ASan রিপোর্ট অন্তর্ভুক্ত করুন

Crashlytics আপনাকে GWP-ASan রিপোর্ট সংগ্রহ করে নেটিভ মেমরি ত্রুটির কারণে সৃষ্ট ক্র্যাশ ডিবাগ করতে সাহায্য করতে পারে। এই মেমরি-সম্পর্কিত ত্রুটিগুলি আপনার অ্যাপের মধ্যে মেমরি দুর্নীতির সাথে যুক্ত হতে পারে, যা অ্যাপ নিরাপত্তা দুর্বলতার প্রধান কারণ।

  • আপনি Crashlytics ড্যাশবোর্ডে কোনো সমস্যার বিবরণে ক্লিক করলে আপনি একটি নতুন "মেমরি স্ট্যাক ট্রেস" ট্যাবে এই ডেটা দেখতে পারেন।

  • আপনি নতুন "GWP-ASan রিপোর্ট" সংকেত এবং ফিল্টার ব্যবহার করতে পারেন যাতে এই ডেটার সাথে সমস্ত সমস্যা দ্রুত দেখতে পারেন৷

আপনি GWP-ASan মেমরি রিপোর্ট পেতে পারেন যদি আপনি স্পষ্টভাবে আপনার অ্যাপে GWP-ASan সক্ষম করেন এবং NDK v18.3.6+ ( Firebase BoM v31.3.0+) এর জন্য Crashlytics SDK ব্যবহার করেন। আপনি Android ডকুমেন্টেশনে উদাহরণ নেটিভ কোড ব্যবহার করে আপনার GWP-ASan সেটআপ পরীক্ষা করতে পারেন।

অ-মারাত্মক ব্যতিক্রম রিপোর্ট করুন

আপনার অ্যাপের ক্র্যাশগুলি স্বয়ংক্রিয়ভাবে রিপোর্ট করার পাশাপাশি, Crashlytics আপনাকে অ-মারাত্মক ব্যতিক্রমগুলি রেকর্ড করতে দেয় এবং পরের বার আপনার অ্যাপ চালু হলে সেগুলি আপনাকে পাঠায়।

আপনার অ্যাপের catch ব্লকগুলিতে অ-মারাত্মক ব্যতিক্রমগুলি রেকর্ড করতে recordException পদ্ধতি ব্যবহার করুন। যেমন:

KotlinJava
try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e)
    // handle your exception here
}
try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().recordException(e);
    // handle your exception here
}

অতিরিক্তভাবে, আপনি নির্দিষ্ট অ-মারাত্মক ব্যতিক্রমের সাথে কাস্টম কী সংযুক্ত করতে পারেন। যেমন:

KotlinJava
try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e) {
        key("string key", "string value")
        key("boolean key", true)
        key("float key", Float.MAX_VALUE)
    }
    // handle your exception here
}
try {
    methodThatThrows();
} catch (Exception e) {
    CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
            .putString("string key", "string value")
            .putBoolean("boolean key", true)
            .putFloat("float key", Float.MAX_VALUE)
            .build();
    FirebaseCrashlytics.getInstance().recordException(e, keysAndValues);
    // handle your exception here
}

সমস্ত রেকর্ড করা ব্যতিক্রমগুলি Firebase কনসোলে অ-মারাত্মক সমস্যা হিসাবে উপস্থিত হয়। ইস্যু সারাংশে Android সংস্করণ এবং হার্ডওয়্যার ডিভাইসের ব্রেকডাউন সহ আপনি সাধারণত ক্র্যাশ থেকে পাওয়া সমস্ত রাষ্ট্রীয় তথ্য ধারণ করে।

Crashlytics আপনার অ্যাপে পারফরম্যান্সের প্রভাব কমাতে একটি ডেডিকেটেড ব্যাকগ্রাউন্ড থ্রেডে ব্যতিক্রম প্রক্রিয়া করে। আপনার ব্যবহারকারীদের নেটওয়ার্ক ট্র্যাফিক কমাতে, Crashlytics ব্যাচগুলি একসাথে ব্যতিক্রমগুলি লগ করেছে এবং পরের বার অ্যাপ চালু হলে সেগুলি পাঠায়৷

ব্রেডক্রাম্ব লগ পান

ব্রেডক্রাম্ব লগগুলি আপনাকে ক্র্যাশ, অ-মারাত্মক বা ANR ইভেন্টের দিকে নিয়ে যাওয়ার জন্য আপনার অ্যাপের সাথে একজন ব্যবহারকারীর ইন্টারঅ্যাকশনগুলি সম্পর্কে আরও ভাল ধারণা দেয়। একটি সমস্যা পুনরুত্পাদন এবং ডিবাগ করার চেষ্টা করার সময় এই লগগুলি সহায়ক হতে পারে।

ব্রেডক্রাম্ব লগগুলি Google Analytics দ্বারা চালিত হয়, তাই ব্রেডক্রাম্ব লগগুলি পেতে, আপনাকে আপনার Firebase প্রকল্পের জন্য Google Analytics সক্ষম করতে হবে এবং আপনার অ্যাপে Google Analytics এর জন্য Firebase SDK যোগ করতে হবে ৷ একবার এই প্রয়োজনীয়তাগুলি পূরণ হয়ে গেলে, আপনি যখন কোনও সমস্যার বিশদ বিবরণ দেখেন তখন লগ ট্যাবের মধ্যে একটি ইভেন্টের ডেটার সাথে ব্রেডক্রাম্ব লগগুলি স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয়৷

Analytics SDK স্বয়ংক্রিয়ভাবে screen_view ইভেন্ট লগ করে যা ব্রেডক্রাম্ব লগগুলিকে ক্র্যাশ, নন-ফেটাল বা ANR ইভেন্টের আগে দেখা স্ক্রিনের তালিকা দেখাতে সক্ষম করে। একটি screen_view ব্রেডক্রাম্ব লগে একটি firebase_screen_class প্যারামিটার থাকে।

ব্রেডক্রাম্ব লগগুলি ইভেন্টের প্যারামিটার ডেটা সহ ব্যবহারকারীর সেশনের মধ্যে ম্যানুয়ালি লগ করা যেকোন কাস্টম ইভেন্টগুলির সাথেও পূর্ণ হয়৷ এই ডেটা ক্র্যাশ, নন-ফেটাল বা ANR ইভেন্ট পর্যন্ত ব্যবহারকারীর ক্রিয়াকলাপগুলির একটি সিরিজ দেখাতে সাহায্য করতে পারে।

মনে রাখবেন যে আপনি Google Analytics ডেটা সংগ্রহ এবং ব্যবহার নিয়ন্ত্রণ করতে পারেন, যার মধ্যে সেই ডেটা রয়েছে যা ব্রেডক্রাম্ব লগগুলিকে পপুলেট করে৷

অপ্ট-ইন রিপোর্টিং সক্ষম করুন

ডিফল্টরূপে, Crashlytics স্বয়ংক্রিয়ভাবে আপনার সমস্ত অ্যাপের ব্যবহারকারীদের জন্য ক্র্যাশ রিপোর্ট সংগ্রহ করে। ব্যবহারকারীদের তাদের পাঠানো ডেটার উপর আরও নিয়ন্ত্রণ দিতে, আপনি স্বয়ংক্রিয় রিপোর্টিং অক্ষম করে অপ্ট-ইন রিপোর্টিং সক্ষম করতে পারেন এবং যখন আপনি আপনার কোডে চয়ন করেন তখন শুধুমাত্র Crashlytics এ ডেটা পাঠাতে পারেন:

  1. আপনার AndroidManifest.xml ফাইলের application ব্লকে, স্বয়ংক্রিয় সংগ্রহ বন্ধ করতে একটি meta-data ট্যাগ যোগ করুন:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. রানটাইমে Crashlytics ডেটা সংগ্রহ ওভাররাইড কল করে নির্বাচিত ব্যবহারকারীদের জন্য সংগ্রহ সক্ষম করুন। আপনার অ্যাপের লঞ্চ জুড়ে ওভাররাইড মান বজায় থাকে যাতে Crashlytics স্বয়ংক্রিয়ভাবে রিপোর্ট সংগ্রহ করতে পারে। স্বয়ংক্রিয় ক্র্যাশ রিপোর্টিং থেকে অপ্ট আউট করতে, ওভাররাইড মান হিসাবে false পাস করুন। false সেট করা হলে, অ্যাপের পরবর্তী রান না হওয়া পর্যন্ত নতুন মান প্রযোজ্য হবে না।

    KotlinJava
    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

ক্র্যাশ ইনসাইট ডেটা পরিচালনা করুন

ক্র্যাশ ইনসাইট আপনাকে আপনার বেনামী স্ট্যাক ট্রেসগুলিকে অন্যান্য ফায়ারবেস অ্যাপের ট্রেসের সাথে তুলনা করে এবং আপনার সমস্যাটি একটি বৃহত্তর প্রবণতার অংশ কিনা তা আপনাকে জানিয়ে সমস্যার সমাধান করতে সহায়তা করে। অনেক সমস্যার জন্য, ক্র্যাশ ইনসাইট এমনকি আপনাকে ক্র্যাশ ডিবাগ করতে সহায়তা করার জন্য সংস্থান সরবরাহ করে।

ক্র্যাশ ইনসাইট সাধারণ স্থিতিশীলতার প্রবণতা সনাক্ত করতে সমষ্টিগত ক্র্যাশ ডেটা ব্যবহার করে। আপনি যদি আপনার অ্যাপের ডেটা শেয়ার না করতে চান, তাহলে Firebase কনসোলে আপনার Crashlytics সমস্যা তালিকার শীর্ষে থাকা ক্র্যাশ ইনসাইটস মেনু থেকে আপনি ক্র্যাশ ইনসাইটগুলি অপ্ট-আউট করতে পারেন৷

,


Crashlytics ড্যাশবোর্ডে, আপনি কোনও ইস্যুতে ক্লিক করতে পারেন এবং একটি বিশদ ইভেন্টের প্রতিবেদন পেতে পারেন। আপনার অ্যাপ্লিকেশনটিতে কী ঘটছে এবং Crashlytics রিপোর্ট করা ইভেন্টগুলির আশেপাশের পরিস্থিতিগুলি আরও ভালভাবে বুঝতে আপনি এই প্রতিবেদনগুলি কাস্টমাইজ করতে পারেন।

  • Google Analytics জন্য যদি আপনার অ্যাপ্লিকেশন ফায়ারবেস এসডিকে ব্যবহার করে তবে স্বয়ংক্রিয়ভাবে ব্রেডক্রম্ব লগগুলি পান। এই লগগুলি আপনাকে আপনার অ্যাপ্লিকেশনটিতে Crashlytics -সংযুক্ত ইভেন্টের দিকে পরিচালিত ব্যবহারকারীর ক্রিয়াকলাপগুলিতে দৃশ্যমানতা দেয়।

  • স্বয়ংক্রিয় ক্র্যাশ রিপোর্টিং বন্ধ করুন এবং আপনার ব্যবহারকারীদের জন্য অপ্ট-ইন রিপোর্টিং সক্ষম করুন । মনে রাখবেন, ডিফল্টরূপে, Crashlytics স্বয়ংক্রিয়ভাবে আপনার সমস্ত অ্যাপের ব্যবহারকারীদের জন্য ক্র্যাশ রিপোর্ট সংগ্রহ করে।

কাস্টম কী যুক্ত করুন

কাস্টম কীগুলি আপনাকে ক্র্যাশ পর্যন্ত আপনার অ্যাপ্লিকেশনটির নির্দিষ্ট অবস্থা পেতে সহায়তা করে। আপনি আপনার ক্র্যাশ রিপোর্টগুলির সাথে স্বেচ্ছাসেবী কী/মান জোড়া যুক্ত করতে পারেন, তারপরে Firebase কনসোলে ক্র্যাশ রিপোর্টগুলি অনুসন্ধান এবং ফিল্টার করতে কাস্টম কীগুলি ব্যবহার করুন।

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

  • আপনি যখন কনসোলে একটি নির্দিষ্ট সমস্যা পর্যালোচনা করছেন, আপনি প্রতিটি ইভেন্টের জন্য সম্পর্কিত কাস্টম কীগুলি ( কী সাবট্যাব) দেখতে পারেন এবং এমনকি কাস্টম কীগুলি (পৃষ্ঠার শীর্ষে ফিল্টার মেনু) দ্বারা ইভেন্টগুলি ফিল্টার করতে পারেন।

কী/মান জোড়া সেট করতে setCustomKey উদাহরণ পদ্ধতিটি ব্যবহার করুন। নোট করুন যে কোনও আদিম বা String আর্গুমেন্ট গ্রহণ করতে value প্যারামিটারের জন্য setCustomKey ওভারলোড করা হয়েছে। এখানে কিছু উদাহরণ আছে:

KotlinJava
val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("my_string_key", "foo") // String value
    key("my_bool_key", true) // boolean value
    key("my_double_key", 1.0) // double value
    key("my_float_key", 1.0f) // float value
    key("my_int_key", 1) // int value
}
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("my_string_key", "foo" /* string value */);

crashlytics.setCustomKey("my_bool_key", true /* boolean value */);

crashlytics.setCustomKey("my_double_key", 1.0 /* double value */);

crashlytics.setCustomKey("my_float_key", 1.0f /* float value */);

crashlytics.setCustomKey("my_int_key", 1 /* int value */);

আপনি কীটি কল করে এবং এটিকে অন্য কোনও মান সেট করে একটি বিদ্যমান কীটির মানও সংশোধন করতে পারেন। যেমন:

KotlinJava
val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("current_level", 3)
    key("last_UI_action", "logged_in")
}
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("current_level", 3);
crashlytics.setCustomKey("last_UI_action", "logged_in");

CustomKeysAndValues একটি উদাহরণ setCustomKeys উদাহরণ পদ্ধতিতে পাস করে বাল্কে কী/মান জোড়া যুক্ত করুন:

KotlinJava

কোটলিনের জন্য, বিদ্যমান কার্যকারিতাটি CustomKeysAndValues বিল্ডার ব্যবহারের চেয়ে সহজ।

crashlytics.setCustomKeys {
  key("str_key", "hello")
  key("bool_key", true)
  key("int_key", 1)
  key("long_key", 1L)
  key("float_key", 1.0f)
  key("double_key", 1.0)
}
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
.putString("string key", "string value")
.putString("string key 2", "string  value 2")
.putBoolean("boolean key", True)
.putBoolean("boolean key 2", False)
.putFloat("float key", 1.01)
.putFloat("float key 2", 2.02)
.build();

FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);

কাস্টম লগ বার্তা যুক্ত করুন

ক্র্যাশ পর্যন্ত পরিচালিত ইভেন্টগুলির জন্য নিজেকে আরও প্রসঙ্গ দেওয়ার জন্য, আপনি আপনার অ্যাপ্লিকেশনটিতে কাস্টম Crashlytics লগ যুক্ত করতে পারেন। Crashlytics আপনার ক্র্যাশ ডেটার সাথে লগগুলি সংযুক্ত করে এবং লগস ট্যাবের নীচে Firebase কনসোলের Crashlytics পৃষ্ঠায় সেগুলি প্রদর্শন করে।

পিনপয়েন্টের সমস্যাগুলি সহায়তা করতে log ব্যবহার করুন। যেমন:

KotlinJava
Firebase.crashlytics.log("message")
FirebaseCrashlytics.getInstance().log("message");

ব্যবহারকারী সনাক্তকারী সেট করুন

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

আপনার প্রতিবেদনে ব্যবহারকারী আইডি যুক্ত করতে, প্রতিটি ব্যবহারকারীকে আইডি নম্বর, টোকেন বা হ্যাশ মান আকারে একটি অনন্য শনাক্তকারীকে নিয়োগ করুন:

KotlinJava
Firebase.crashlytics.setUserId("user123456789")
FirebaseCrashlytics.getInstance().setUserId("user123456789");

আপনি যদি এটি সেট করার পরে কোনও ব্যবহারকারীর শনাক্তকারী সাফ করার প্রয়োজন হয় তবে একটি ফাঁকা স্ট্রিংয়ে মানটি পুনরায় সেট করুন। ব্যবহারকারী সনাক্তকারী সাফ করা বিদ্যমান Crashlytics রেকর্ডগুলি সরিয়ে দেয় না। আপনার যদি কোনও ব্যবহারকারী আইডির সাথে সম্পর্কিত রেকর্ডগুলি মুছতে হয় তবে ফায়ারবেস সাপোর্টের সাথে যোগাযোগ করুন

(কেবলমাত্র অ্যান্ড্রয়েড এনডিকে) এনডিকে ক্র্যাশ রিপোর্টগুলিতে মেটাডেটা যুক্ত করুন

কাস্টম কী , কাস্টম লগস , ব্যবহারকারী সনাক্তকারী হিসাবে এনডিকে ক্র্যাশ রিপোর্টগুলিতে মেটাডেটা যুক্ত করতে আপনি আপনার সি ++ কোডে crashlytics.h শিরোনামটি ally চ্ছিকভাবে অন্তর্ভুক্ত করতে পারেন। এই সমস্ত বিকল্পগুলি উপরের এই পৃষ্ঠায় বর্ণিত হয়েছে।

crashlytics.h ফায়ারবেস অ্যান্ড্রয়েড এসডিকে গিটহাব সংগ্রহস্থলে কেবল শিরোনাম-সি ++ লাইব্রেরি হিসাবে উপলব্ধ।

এনডিকে সি ++ এপিআই ব্যবহার করার নির্দেশাবলীর জন্য শিরোনাম ফাইলে মন্তব্যগুলি পড়ুন।

মেমরি দুর্নীতির সমস্যাগুলি ডিবাগ করার জন্য জিডব্লিউপি-আসান প্রতিবেদনগুলি অন্তর্ভুক্ত করুন

Crashlytics আপনাকে জিডাব্লুপি-আসান রিপোর্ট সংগ্রহ করে দেশীয় মেমরি ত্রুটিগুলির কারণে ক্র্যাশগুলি ডিবাগ করতে সহায়তা করতে পারে। এই মেমরি সম্পর্কিত ত্রুটিগুলি আপনার অ্যাপ্লিকেশনটির মধ্যে মেমরি দুর্নীতির সাথে যুক্ত হতে পারে, যা অ্যাপ্লিকেশন সুরক্ষা দুর্বলতার প্রধান কারণ।

  • আপনি যখন Crashlytics ড্যাশবোর্ডে কোনও সমস্যার বিবরণে ক্লিক করেন তখন আপনি এই ডেটা একটি নতুন "মেমরি স্ট্যাক ট্রেস" ট্যাবে দেখতে পারেন।

  • আপনি এই ডেটা দিয়ে সমস্ত সমস্যাগুলি দ্রুত দেখতে নতুন "জিডব্লিউপি-আসান রিপোর্ট" সিগন্যাল এবং ফিল্টারও ব্যবহার করতে পারেন।

আপনি যদি আপনার অ্যাপ্লিকেশনটিতে স্পষ্টভাবে GWP-ASAN সক্ষম করেন এবং NDK V18.3.6+ ( Firebase BoM 31.3.0+) এর জন্য Crashlytics এসডিকে ব্যবহার করেন তবে আপনি জিডব্লিউপি-আসান মেমরি প্রতিবেদনগুলি পেতে পারেন। আপনি অ্যান্ড্রয়েড ডকুমেন্টেশনে উদাহরণ নেটিভ কোডটি ব্যবহার করে আপনার জিডাব্লুপি-আসান সেটআপ পরীক্ষা করতে পারেন।

অ-মারাত্মক ব্যতিক্রম রিপোর্ট করুন

আপনার অ্যাপের ক্র্যাশগুলি স্বয়ংক্রিয়ভাবে প্রতিবেদন করার পাশাপাশি, Crashlytics আপনাকে অ-মারাত্মক ব্যতিক্রমগুলি রেকর্ড করতে দেয় এবং পরের বার আপনার অ্যাপটি চালু হওয়ার পরে সেগুলি আপনার কাছে প্রেরণ করে।

আপনার অ্যাপের catch ব্লকগুলিতে অ-মারাত্মক ব্যতিক্রম রেকর্ড করতে recordException পদ্ধতিটি ব্যবহার করুন। যেমন:

KotlinJava
try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e)
    // handle your exception here
}
try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().recordException(e);
    // handle your exception here
}

অতিরিক্তভাবে, আপনি নির্দিষ্ট অ-মারাত্মক ব্যতিক্রমের কাস্টম কীগুলিও সংযুক্ত করতে পারেন। যেমন:

KotlinJava
try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e) {
        key("string key", "string value")
        key("boolean key", true)
        key("float key", Float.MAX_VALUE)
    }
    // handle your exception here
}
try {
    methodThatThrows();
} catch (Exception e) {
    CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
            .putString("string key", "string value")
            .putBoolean("boolean key", true)
            .putFloat("float key", Float.MAX_VALUE)
            .build();
    FirebaseCrashlytics.getInstance().recordException(e, keysAndValues);
    // handle your exception here
}

সমস্ত রেকর্ড করা ব্যতিক্রমগুলি Firebase কনসোলে অ-মারাত্মক সমস্যা হিসাবে উপস্থিত হয়। ইস্যু সংক্ষিপ্তসারটিতে অ্যান্ড্রয়েড সংস্করণ এবং হার্ডওয়্যার ডিভাইসের ব্রেকডাউন সহ আপনি সাধারণত ক্র্যাশগুলি থেকে প্রাপ্ত সমস্ত রাষ্ট্রীয় তথ্য রয়েছে।

Crashlytics আপনার অ্যাপ্লিকেশনটিতে পারফরম্যান্সের প্রভাবকে হ্রাস করতে একটি উত্সর্গীকৃত ব্যাকগ্রাউন্ড থ্রেডে ব্যতিক্রমগুলি প্রক্রিয়া করে। আপনার ব্যবহারকারীর নেটওয়ার্ক ট্র্যাফিক হ্রাস করতে, Crashlytics ব্যাচগুলি একসাথে লগ করে ব্যতিক্রমগুলি এবং পরের বার অ্যাপটি চালু হওয়ার সময় তাদের প্রেরণ করে।

ব্রেডক্রাম্ব লগ পান

ব্রেডক্রাম্ব লগগুলি আপনাকে আপনার অ্যাপ্লিকেশনটির সাথে ক্র্যাশ, অ-মারাত্মক বা এএনআর ইভেন্টের দিকে এগিয়ে যাওয়ার সাথে কোনও ব্যবহারকারীর যে মিথস্ক্রিয়া ছিল সে সম্পর্কে আরও ভাল ধারণা দেয়। কোনও সমস্যা পুনরুত্পাদন এবং ডিবাগ করার চেষ্টা করার সময় এই লগগুলি সহায়ক হতে পারে।

ব্রেডক্রম্ব লগগুলি গুগল অ্যানালিটিক্স দ্বারা চালিত, তাই ব্রেডক্রাম্ব লগগুলি পেতে আপনাকে আপনার ফায়ারবেস প্রকল্পের জন্য গুগল অ্যানালিটিক্স সক্ষম করতে হবে এবং আপনার অ্যাপ্লিকেশনটিতে Google Analytics জন্য ফায়ারবেস এসডিকে যুক্ত করতে হবে । এই প্রয়োজনীয়তাগুলি পূরণ হয়ে গেলে, আপনি যখন কোনও সমস্যার বিশদটি দেখেন তখন ব্রেডক্রম্ব লগগুলি স্বয়ংক্রিয়ভাবে লগস ট্যাবের মধ্যে কোনও ইভেন্টের ডেটা সহ অন্তর্ভুক্ত করা হয়।

Analytics এসডিকে স্বয়ংক্রিয়ভাবে screen_view ইভেন্টটি লগ করে যা ব্রেডক্রাম্ব লগগুলিকে ক্র্যাশ, অ-মারাত্মক বা এএনআর ইভেন্টের আগে দেখা পর্দার একটি তালিকা দেখাতে সক্ষম করে। একটি screen_view ব্রেডক্রাম্ব লগটিতে একটি firebase_screen_class প্যারামিটার রয়েছে।

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

নোট করুন যে আপনি Google Analytics ডেটা সংগ্রহ এবং ব্যবহার নিয়ন্ত্রণ করতে পারেন, যার মধ্যে এমন ডেটা অন্তর্ভুক্ত রয়েছে যা ব্রেডক্রাম্ব লগগুলি পপুলেট করে।

অপ্ট-ইন রিপোর্টিং সক্ষম করুন

ডিফল্টরূপে, Crashlytics স্বয়ংক্রিয়ভাবে আপনার সমস্ত অ্যাপের ব্যবহারকারীদের জন্য ক্র্যাশ রিপোর্ট সংগ্রহ করে। ব্যবহারকারীদের তাদের যে ডেটা প্রেরণ করা হয়েছে তার উপর আরও নিয়ন্ত্রণ দেওয়ার জন্য, আপনি যখন আপনার কোডটিতে বেছে নেবেন তখন আপনি স্বয়ংক্রিয় প্রতিবেদন অক্ষম করে এবং কেবল Crashlytics ডেটা প্রেরণ করে অপ্ট-ইন রিপোর্টিং সক্ষম করতে পারেন:

  1. আপনার AndroidManifest.xml ফাইলের application ব্লকে, স্বয়ংক্রিয় সংগ্রহ বন্ধ করতে একটি meta-data ট্যাগ যুক্ত করুন:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. রানটাইমে Crashlytics ডেটা সংগ্রহ ওভাররাইড কল করে নির্বাচিত ব্যবহারকারীদের জন্য সংগ্রহ সক্ষম করুন। ওভাররাইডের মানটি আপনার অ্যাপ্লিকেশনটির লঞ্চগুলি জুড়ে রয়েছে যাতে Crashlytics স্বয়ংক্রিয়ভাবে প্রতিবেদনগুলি সংগ্রহ করতে পারে। স্বয়ংক্রিয় ক্র্যাশ রিপোর্টিং থেকে বেরিয়ে আসার জন্য, ওভাররাইড মান হিসাবে false পাস করুন। যখন false হিসাবে সেট করা হয়, নতুন মানটি অ্যাপের পরবর্তী রান না হওয়া পর্যন্ত প্রযোজ্য নয়।

    KotlinJava
    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

ক্র্যাশ অন্তর্দৃষ্টি ডেটা পরিচালনা করুন

ক্র্যাশ অন্তর্দৃষ্টিগুলি আপনাকে অন্যান্য ফায়ারবেস অ্যাপ্লিকেশনগুলির ট্রেসগুলির সাথে আপনার বেনামে স্ট্যাক ট্রেসগুলির তুলনা করে সমস্যাগুলি সমাধান করতে এবং আপনার সমস্যাটি বৃহত্তর প্রবণতার অংশ কিনা তা আপনাকে জানাতে সহায়তা করে। অনেক সমস্যার জন্য, ক্র্যাশ অন্তর্দৃষ্টি এমনকি ক্র্যাশটি ডিবাগ করতে সহায়তা করার জন্য সংস্থান সরবরাহ করে।

ক্র্যাশ অন্তর্দৃষ্টিগুলি সাধারণ স্থিতিশীলতার প্রবণতাগুলি সনাক্ত করতে একত্রিত ক্র্যাশ ডেটা ব্যবহার করে। আপনি যদি নিজের অ্যাপের ডেটা ভাগ না করতে পছন্দ করেন তবে আপনি Firebase কনসোলে আপনার Crashlytics ইস্যু তালিকার শীর্ষে ক্র্যাশ ইনসাইটস মেনু থেকে ক্র্যাশ অন্তর্দৃষ্টি থেকে বেরিয়ে যেতে পারেন।

,


In the Crashlytics dashboard, you can click into an issue and get a detailed event report. You can customize those reports to help you better understand what's happening in your app and the circumstances around events reported to Crashlytics .

  • Automatically get breadcrumb logs if your app uses the Firebase SDK for Google Analytics . These logs give you visibility into user actions leading up to a Crashlytics -collected event in your app.

  • Turn off automatic crash reporting and enable opt-in reporting for your users. Note that, by default, Crashlytics automatically collects crash reports for all your app's users.

Add custom keys

Custom keys help you get the specific state of your app leading up to a crash. You can associate arbitrary key/value pairs with your crash reports, then use the custom keys to search and filter crash reports in the Firebase console.

  • In the Crashlytics dashboard , you can search for issues that match a custom key.

  • When you're reviewing a specific issue in the console, you can view the associated custom keys for each event ( Keys subtab) and even filter the events by custom keys ( Filter menu at the top of the page).

Use the setCustomKey instance method to set key/value pairs. Note that setCustomKey is overloaded for the value parameter to accept any primitive or String argument. এখানে কিছু উদাহরণ আছে:

KotlinJava
val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("my_string_key", "foo") // String value
    key("my_bool_key", true) // boolean value
    key("my_double_key", 1.0) // double value
    key("my_float_key", 1.0f) // float value
    key("my_int_key", 1) // int value
}
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("my_string_key", "foo" /* string value */);

crashlytics.setCustomKey("my_bool_key", true /* boolean value */);

crashlytics.setCustomKey("my_double_key", 1.0 /* double value */);

crashlytics.setCustomKey("my_float_key", 1.0f /* float value */);

crashlytics.setCustomKey("my_int_key", 1 /* int value */);

You can also modify the value of an existing key by calling the key and setting it to a different value. যেমন:

KotlinJava
val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("current_level", 3)
    key("last_UI_action", "logged_in")
}
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("current_level", 3);
crashlytics.setCustomKey("last_UI_action", "logged_in");

Add key/value pairs in bulk by passing an instance of CustomKeysAndValues to the setCustomKeys instance method:

KotlinJava

For Kotlin, the existing functionality is simpler than using the CustomKeysAndValues builder.

crashlytics.setCustomKeys {
  key("str_key", "hello")
  key("bool_key", true)
  key("int_key", 1)
  key("long_key", 1L)
  key("float_key", 1.0f)
  key("double_key", 1.0)
}
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
.putString("string key", "string value")
.putString("string key 2", "string  value 2")
.putBoolean("boolean key", True)
.putBoolean("boolean key 2", False)
.putFloat("float key", 1.01)
.putFloat("float key 2", 2.02)
.build();

FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);

Add custom log messages

To give yourself more context for the events leading up to a crash, you can add custom Crashlytics logs to your app. Crashlytics associates the logs with your crash data and displays them in the Crashlytics page of the Firebase console , under the Logs tab.

Use log to help pinpoint issues. যেমন:

KotlinJava
Firebase.crashlytics.log("message")
FirebaseCrashlytics.getInstance().log("message");

Set user identifiers

To diagnose an issue, it's often helpful to know which of your users experienced a given crash. Crashlytics includes a way to anonymously identify users in your crash reports.

To add user IDs to your reports, assign each user a unique identifier in the form of an ID number, token, or hashed value:

KotlinJava
Firebase.crashlytics.setUserId("user123456789")
FirebaseCrashlytics.getInstance().setUserId("user123456789");

If you ever need to clear a user identifier after you set it, reset the value to a blank string. Clearing a user identifier does not remove existing Crashlytics records. If you need to delete records associated with a user ID, contact Firebase support .

(Android NDK only) Add metadata to NDK crash reports

You can optionally include the crashlytics.h header in your C++ code to add metadata to NDK crash reports, such as custom keys , custom logs , user identifiers . All these options are described on this page above.

crashlytics.h is available as a header-only C++ library in the Firebase Android SDK GitHub Repository .

Read the comments in the header file for instructions on using the NDK C++ APIs.

Include GWP-ASan reports to debug memory corruption issues

Crashlytics can help you debug crashes caused by native memory errors by collecting GWP-ASan reports. These memory-related errors can be associated with memory corruption within your app, which is the leading cause of app security vulnerabilities.

  • You can view this data in a new "Memory stack traces" tab when you click into an issue's details in the Crashlytics dashboard .

  • You can also use the new "GWP-ASan report" signal and filter to quickly view all issues with this data.

You can get GWP-ASan memory reports if you explicitly enable GWP-ASan in your app and use the Crashlytics SDK for NDK v18.3.6+ ( Firebase BoM v31.3.0+). You can test your GWP-ASan setup using the example native code in the Android documentation .

Report non-fatal exceptions

In addition to automatically reporting your app's crashes, Crashlytics lets you record non-fatal exceptions and sends them to you the next time your app launches.

Use the recordException method to record non-fatal exceptions in your app's catch blocks. যেমন:

KotlinJava
try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e)
    // handle your exception here
}
try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().recordException(e);
    // handle your exception here
}

Additionally, you can also attach custom keys to the specific non-fatal exception. যেমন:

KotlinJava
try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e) {
        key("string key", "string value")
        key("boolean key", true)
        key("float key", Float.MAX_VALUE)
    }
    // handle your exception here
}
try {
    methodThatThrows();
} catch (Exception e) {
    CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
            .putString("string key", "string value")
            .putBoolean("boolean key", true)
            .putFloat("float key", Float.MAX_VALUE)
            .build();
    FirebaseCrashlytics.getInstance().recordException(e, keysAndValues);
    // handle your exception here
}

All recorded exceptions appear as non-fatal issues in the Firebase console. The issue summary contains all the state information you normally get from crashes, along with breakdowns by Android version and hardware device.

Crashlytics processes exceptions on a dedicated background thread to minimize the performance impact to your app. To reduce your users' network traffic, Crashlytics batches logged exceptions together and sends them the next time the app launches.

Get breadcrumb logs

Breadcrumb logs give you a better understanding of the interactions that a user had with your app leading up to a crash, non-fatal, or ANR event. These logs can be helpful when trying to reproduce and debug an issue.

Breadcrumb logs are powered by Google Analytics, so to get breadcrumb logs, you need to enable Google Analytics for your Firebase project and add the Firebase SDK for Google Analytics to your app. Once these requirements are met, breadcrumb logs are automatically included with an event's data within the Logs tab when you view the details of an issue.

The Analytics SDK automatically logs the screen_view event which enables the breadcrumb logs to show a list of screens viewed before the crash, non-fatal, or ANR event. A screen_view breadcrumb log contains a firebase_screen_class parameter.

Breadcrumb logs are also populated with any custom events that you manually log within the user's session, including the event's parameter data. This data can help show a series of user actions leading up to a crash, non-fatal, or ANR event.

Note that you can control the collection and use of Google Analytics data , which includes the data that populates breadcrumb logs.

Enable opt-in reporting

By default, Crashlytics automatically collects crash reports for all your app's users. To give users more control over the data they send, you can enable opt-in reporting by disabling automatic reporting and only sending data to Crashlytics when you choose to in your code:

  1. In the application block of your AndroidManifest.xml file, add a meta-data tag to turn off automatic collection:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Enable collection for select users by calling the Crashlytics data collection override at runtime. The override value persists across launches of your app so Crashlytics can automatically collect reports. To opt out of automatic crash reporting, pass false as the override value. When set to false , the new value does not apply until the next run of the app.

    KotlinJava
    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

Manage Crash Insights data

Crash Insights helps you resolve issues by comparing your anonymized stack traces to traces from other Firebase apps and letting you know if your issue is part of a larger trend. For many issues, Crash Insights even provides resources to help you debug the crash.

Crash Insights uses aggregated crash data to identify common stability trends. If you'd prefer not to share your app's data, you can opt-out of Crash Insights from the Crash Insights menu at the top of your Crashlytics issue list in the Firebase console .