ในหน้าแดชบอร์ด 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 ที่มีอยู่ออก หากต้องการลบระเบียนที่เชื่อมโยงกับ User-ID โปรดติดต่อฝ่ายสนับสนุน Firebase
(Android NDK เท่านั้น) เพิ่มข้อมูลเมตาลงในรายงานข้อขัดข้องของ NDK
คุณเลือกรวมส่วนหัว crashlytics.h
ในโค้ด C++ เพื่อเพิ่มข้อมูลเมตาลงในรายงานข้อขัดข้องของ NDK เช่น คีย์ที่กำหนดเอง
บันทึกที่กำหนดเอง และตัวระบุผู้ใช้ได้ เราได้อธิบายตัวเลือกทั้งหมดนี้
ไว้ในหน้านี้ด้านบน
crashlytics.h
พร้อมใช้งานเป็นไลบรารี C++ แบบส่วนหัวเท่านั้นใน Firebase Android SDK GitHub Repository
อ่านความคิดเห็นในไฟล์ส่วนหัวเพื่อดูคำแนะนำเกี่ยวกับการใช้ 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 เมื่อคุณเลือกในโค้ดเท่านั้น โดยทำดังนี้
ในบล็อก
application
ของไฟล์AndroidManifest.xml
ให้เพิ่มแท็กmeta-data
เพื่อปิดการรวบรวมอัตโนมัติ<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
เปิดใช้คอลเล็กชันสำหรับผู้ใช้บางรายโดยการเรียกใช้การลบล้างการรวบรวมข้อมูลของ Crashlytics ขณะรันไทม์ ค่าการลบล้างจะยังคงอยู่ในการเปิดตัวแอป เพื่อให้ Crashlytics รวบรวมรายงานได้โดยอัตโนมัติ หากต้องการเลือกไม่ใช้รายงานข้อขัดข้องอัตโนมัติ ให้ส่ง
false
เป็นค่าการลบล้าง เมื่อตั้งค่าเป็นfalse
ค่าใหม่จะไม่มีผลจนกว่าจะมีการเรียกใช้แอปครั้งถัดไปKotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
จัดการข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้อง
ข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องช่วยคุณแก้ปัญหาโดยการเปรียบเทียบสแต็กที่มีการลบข้อมูลระบุตัวบุคคลกับการติดตามจากแอป Firebase อื่นๆ และแจ้งให้คุณทราบว่าปัญหาของคุณเป็นส่วนหนึ่งของแนวโน้มที่ใหญ่กว่าไหม สำหรับปัญหาจำนวนมาก Crash Insights มีแหล่งข้อมูล ที่จะช่วยคุณแก้ไขข้อบกพร่องของข้อขัดข้องดังกล่าว
Crash Insights ใช้ข้อมูลข้อขัดข้องที่รวบรวมไว้เพื่อระบุแนวโน้มความเสถียรที่พบบ่อย หากไม่ต้องการแชร์ข้อมูลของแอป คุณเลือกไม่ใช้ Crash Insights ได้จากเมนู Crash Insights ที่ด้านบนของรายการปัญหา Crashlytics ในคอนโซล Firebase