ในแดชบอร์ด 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 กับแอปของคุณ เมื่อมีคุณสมบัติตามข้อกำหนดเหล่านี้ บันทึกเบรดครัมบ์จะ รวมกับข้อมูลของเหตุการณ์ภายในแท็บบันทึกเมื่อคุณดูรายละเอียด ของปัญหา
SDK Analytics
จะบันทึกเหตุการณ์ 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 ใช้ข้อมูลข้อขัดข้องที่รวบรวมไว้เพื่อระบุแนวโน้มความเสถียรที่พบบ่อย หากไม่ต้องการแชร์ข้อมูลของแอป คุณสามารถเลือกไม่ใช้ข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องได้ จากเมนูข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องที่ด้านบนของรายการปัญหา Crashlytics ในคอนโซล Firebase