ปรับแต่งรายงานข้อขัดข้องของ Firebase Crashlytics

ในหน้าแดชบอร์ด Crashlytics คุณสามารถคลิกที่ปัญหาและดูรายละเอียด รายงานเหตุการณ์ คุณสามารถปรับแต่งรายงานเหล่านั้นเพื่อช่วยให้คุณเข้าใจมากขึ้น เกิดอะไรขึ้นในแอปและสถานการณ์ที่เกี่ยวข้องกับเหตุการณ์ที่รายงานไปยัง Crashlytics

  • รับบันทึกเบรดครัมบ์โดยอัตโนมัติหากแอปของคุณใช้ Firebase SDK สำหรับ Google Analytics บันทึกเหล่านี้ช่วยให้คุณทราบถึง การดำเนินการของผู้ใช้ที่นำไปสู่เหตุการณ์ที่รวบรวม Crashlytics ในแอป

  • ปิดการรายงานข้อขัดข้องอัตโนมัติ และ เปิดใช้การรายงานการเลือกใช้สำหรับผู้ใช้ของคุณ โปรดทราบว่าตาม Crashlytics จะรวบรวมรายงานข้อขัดข้องโดยอัตโนมัติสำหรับ ผู้ใช้แอป

เพิ่มคีย์ที่กำหนดเอง

คีย์ที่กำหนดเองช่วยให้คุณได้รับสถานะที่เฉพาะเจาะจงของแอปซึ่งนำไปสู่ข้อขัดข้อง คุณสามารถเชื่อมโยงคู่คีย์/ค่าที่กำหนดเองกับรายงานข้อขัดข้อง จากนั้นใช้ คีย์ที่กำหนดเองเพื่อค้นหาและกรองรายงานข้อขัดข้องในคอนโซล Firebase

  • ในแดชบอร์ดของ Crashlytics คุณค้นหาปัญหาได้ ที่ตรงกับคีย์ที่กำหนดเอง

  • ขณะตรวจสอบปัญหาในคอนโซล คุณสามารถดู คีย์ที่กำหนดเองที่เกี่ยวข้องสำหรับแต่ละเหตุการณ์ (แท็บย่อยคีย์) และแม้แต่กรอง เหตุการณ์ตามคีย์ที่กำหนดเอง (เมนูตัวกรองที่ด้านบนของหน้า)

ใช้เมธอดอินสแตนซ์ setCustomKey เพื่อตั้งค่าคู่คีย์/ค่า โปรดทราบว่า setCustomKey มากเกินไปสำหรับพารามิเตอร์ value เพื่อยอมรับค่าพื้นฐาน หรือ String อาร์กิวเมนต์ โดยตัวอย่างมีดังนี้

Kotlin+KTX

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
}

Java

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 */);

คุณยังแก้ไขค่าของคีย์ที่มีอยู่ได้ด้วยการเรียกใช้คีย์และการตั้งค่า เป็นค่าอื่น เช่น

Kotlin+KTX

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

Java

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

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

เพิ่มคู่คีย์/ค่าเป็นกลุ่มโดยการส่งอินสแตนซ์ CustomKeysAndValues ไปยัง วิธีอินสแตนซ์ setCustomKeys

Kotlin+KTX

สำหรับ 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)
}

Java

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 จะเชื่อมโยงบันทึก ด้วยข้อมูลข้อขัดข้องและแสดงในหน้า Crashlytics ของ คอนโซล Firebase ใต้แท็บบันทึก

ใช้ log เพื่อช่วยระบุปัญหา เช่น

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

FirebaseCrashlytics.getInstance().log("message");

กำหนดตัวระบุผู้ใช้

ในการวินิจฉัยปัญหา คุณควรทราบว่าผู้ใช้คนใดประสบปัญหา การขัดข้องนั้น Crashlytics มีวิธีระบุผู้ใช้ใน รายงานข้อขัดข้อง

หากต้องการเพิ่ม User-ID ลงในรายงาน ให้กำหนดตัวระบุที่ไม่ซ้ำกันให้ผู้ใช้แต่ละรายใน รูปแบบของหมายเลขรหัส โทเค็น หรือค่าที่แฮช ดังนี้

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Java

FirebaseCrashlytics.getInstance().setUserId("user123456789");

หากต้องการล้างตัวระบุผู้ใช้หลังจากตั้งค่าแล้ว ให้รีเซ็ตค่าเป็น สตริงว่าง การล้างตัวระบุผู้ใช้จะไม่ลบตัวระบุที่มีอยู่ ระเบียน Crashlytics หากต้องการลบระเบียนที่เชื่อมโยงกับผู้ใช้ โปรดติดต่อทีมสนับสนุน Firebase

(Android NDK เท่านั้น) เพิ่มข้อมูลเมตาลงในรายงานข้อขัดข้องของ NDK

คุณจะใส่ส่วนหัว crashlytics.h ในโค้ด C++ เพื่อเพิ่มก็ได้ ข้อมูลเมตาไปยังรายงานข้อขัดข้องของ NDK เช่น คีย์ที่กำหนดเอง บันทึกที่กำหนดเอง ตัวระบุผู้ใช้ ตัวเลือกทั้งหมดนี้มีการอธิบายไว้ที่ หน้านี้ที่ด้านบน

crashlytics.h สามารถใช้เป็นไลบรารี C++ แบบส่วนหัวเท่านั้นใน ที่เก็บ GitHub สำหรับ Firebase Android SDK

อ่านความคิดเห็นในไฟล์ส่วนหัวเพื่อดูคำแนะนำเกี่ยวกับการใช้ API ของ NDK C++

รวมรายงาน GWP-ASan เพื่อแก้ปัญหาหน่วยความจำเสียหาย

Crashlytics ช่วยคุณแก้ไขข้อบกพร่องของข้อขัดข้องที่เกิดจากข้อผิดพลาดด้านหน่วยความจําของระบบได้โดยทำดังนี้ ในการรวบรวมรายงานของ GWP-ASan ข้อผิดพลาดเกี่ยวกับหน่วยความจำเหล่านี้สามารถเชื่อมโยงกับ หน่วยความจำภายในแอปของคุณเสียหาย ซึ่งเป็นสาเหตุหลักของการรักษาความปลอดภัยของแอป ช่องโหว่

  • คุณดูข้อมูลนี้ได้ใน "สแต็กเทรซหน่วยความจำ" ใหม่ เมื่อคุณคลิก รายละเอียดของปัญหาใน แดชบอร์ดของ Crashlytics

  • คุณยังใช้ "รายงาน GWP-ASan" ใหม่ได้ด้วย สัญญาณและตัวกรองเพื่อดูอย่างรวดเร็ว ปัญหาทั้งหมดเกี่ยวกับข้อมูลนี้

คุณสามารถรับรายงานหน่วยความจำของ GWP-ASan ได้หากคุณ เปิดใช้ GWP-ASan อย่างชัดแจ้ง ในแอปและใช้ Crashlytics SDK สำหรับ NDK v18.3.6 ขึ้นไป (Firebase BoM v31.3.0 ขึ้นไป) คุณสามารถทดสอบการตั้งค่า GWP-ASan ได้โดยใช้ ตัวอย่างโค้ดแบบเนทีฟในเอกสารประกอบของ Android

รายงานข้อยกเว้นที่ไม่ร้ายแรง

นอกจากรายงานข้อขัดข้องของแอปโดยอัตโนมัติแล้ว Crashlytics ยัง คุณบันทึกข้อยกเว้นที่ไม่ร้ายแรงและส่งให้คุณในครั้งถัดไปที่แอปของคุณ เปิดตัว

ใช้เมธอด recordException เพื่อบันทึกข้อยกเว้นที่ไม่ร้ายแรงของแอป บล็อก catch รายการ เช่น

Kotlin+KTX

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

Java

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

ข้อยกเว้นที่บันทึกไว้ทั้งหมดจะปรากฏเป็นปัญหาที่ไม่ร้ายแรงในคอนโซล Firebase สรุปปัญหามีข้อมูลสถานะทั้งหมดที่คุณจะได้รับตามปกติ ข้อขัดข้อง ตลอดจนรายละเอียดตามเวอร์ชัน Android และอุปกรณ์ฮาร์ดแวร์

Crashlytics จะประมวลผลข้อยกเว้นในเทรดเบื้องหลังโดยเฉพาะไปยัง ลดผลกระทบด้านประสิทธิภาพที่มีต่อแอปให้เหลือน้อยที่สุด วิธีลดเครือข่ายของผู้ใช้ Crashlytics จะบันทึกข้อยกเว้นไว้ด้วยกันและส่ง ครั้งต่อไปที่เปิดแอป

รับบันทึกเบรดครัมบ์

บันทึกเบรดครัมบ์ช่วยให้คุณเข้าใจการโต้ตอบของผู้ใช้ได้ดียิ่งขึ้น ในแอปซึ่งนำไปสู่เหตุการณ์ข้อขัดข้อง ไม่ร้ายแรง หรือ ANR บันทึกเหล่านี้อาจ เกิดประโยชน์เมื่อพยายามสร้างข้อผิดพลาดซ้ำและแก้ไขข้อบกพร่อง

บันทึกเบรดครัมบ์ขับเคลื่อนโดย Google Analytics ดังนั้นในการรับบันทึกเบรดครัมบ์ จำเป็นต้อง เปิดใช้ Google Analytics สำหรับโปรเจ็กต์ Firebase และ เพิ่ม Firebase SDK สำหรับ Google Analytics กับแอปของคุณ เมื่อมีคุณสมบัติตามข้อกำหนดเหล่านี้ บันทึกเบรดครัมบ์จะ รวมกับข้อมูลของเหตุการณ์ภายในแท็บบันทึกเมื่อคุณดูรายละเอียด ของปัญหา

Analytics SDK บันทึกเหตุการณ์ screen_view โดยอัตโนมัติ ซึ่งจะทำให้บันทึกเบรดครัมบ์แสดงรายการหน้าจอที่มีการดูก่อน เหตุการณ์ข้อขัดข้อง ไม่ร้ายแรง หรือ ANR บันทึกเบรดครัมบ์ screen_view ประกอบด้วย พารามิเตอร์ firebase_screen_class

นอกจากนี้ บันทึกเบรดครัมบ์ยังมีการเติมข้อมูลด้วย เหตุการณ์ที่กำหนดเองซึ่งคุณบันทึกด้วยตนเองภายในแท็ก ซึ่งรวมถึงข้อมูลพารามิเตอร์ของเหตุการณ์ ข้อมูลนี้จะช่วยแสดงชุดหนังสือ ของการดำเนินการของผู้ใช้ที่นำไปสู่เหตุการณ์ข้อขัดข้อง ไม่ร้ายแรง หรือ ANR

โปรดทราบว่าคุณสามารถ ควบคุมการเก็บรวบรวมและใช้ข้อมูล Google Analytics ซึ่งมีข้อมูลที่สร้างบันทึกเบรดครัมบ์

เปิดใช้การรายงานการเลือกใช้

โดยค่าเริ่มต้น Crashlytics จะรวบรวมรายงานข้อขัดข้องโดยอัตโนมัติสำหรับ ผู้ใช้แอป เพื่อให้ผู้ใช้ควบคุมข้อมูลที่ส่งได้มากขึ้น ให้เปิดใช้ การเลือกใช้การรายงานโดยปิดการใช้งานการรายงานอัตโนมัติและส่งข้อมูลไปที่ Crashlytics เมื่อคุณเลือกใช้ในโค้ด

  1. ในบล็อก application ของไฟล์ AndroidManifest.xml ให้เพิ่ม แท็ก meta-data เพื่อปิดการรวบรวมอัตโนมัติ

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. เปิดใช้การรวบรวมสำหรับผู้ใช้ที่เลือกโดยการเรียกใช้ข้อมูล Crashlytics การลบล้างคอลเล็กชันขณะรันไทม์ ค่าการลบล้างจะยังคงอยู่กับการเปิดตัวทุกครั้ง ของแอปเพื่อให้ Crashlytics รวบรวมรายงานได้โดยอัตโนมัติ วิธีเลือกไม่ใช้ ของการรายงานข้อขัดข้องอัตโนมัติ ให้ส่ง false เป็นค่าการลบล้าง เมื่อตั้งค่าแล้ว เป็น false ค่าใหม่จะไม่มีผลจนกว่าจะมีการเรียกใช้แอปครั้งถัดไป

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

จัดการข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้อง

ข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องช่วยคุณแก้ไขปัญหาด้วยการเปรียบเทียบสแต็กที่มีการลบข้อมูลระบุตัวบุคคลของคุณ การติดตามไปยังการติดตามจากแอป Firebase อื่นๆ และแจ้งให้คุณทราบหากปัญหาที่พบ อยู่ในเทรนด์ที่ใหญ่กว่า สำหรับปัญหาจำนวนมาก Crash Insights มีแหล่งข้อมูล เพื่อช่วยแก้ไขข้อบกพร่องของข้อขัดข้อง

Crash Insights ใช้ข้อมูลข้อขัดข้องที่รวบรวมไว้เพื่อระบุแนวโน้มความเสถียรที่พบบ่อย หากไม่ต้องการแชร์ข้อมูลของแอป คุณสามารถเลือกไม่ใช้ข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องได้ จากเมนูข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องที่ด้านบนของรายการปัญหาของ Crashlytics ในคอนโซล Firebase