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

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

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

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

รายงานข้อยกเว้น

รายงานข้อยกเว้นที่พบ

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

คุณสามารถบันทึกข้อยกเว้นใน C# ได้โดยใช้วิธีการต่อไปนี้

Crashlytics.LogException(Exception ex);

คุณบันทึกข้อยกเว้นที่คาดไว้ในคำสั่งลอง/จับบล็อกของเกมได้โดยทำดังนี้

try {
    myMethodThatThrows();
} catch (Exception e) {
   Crashlytics.LogException(e);
   // handle your exception here!
}

รายงานข้อยกเว้นที่ตรวจไม่พบ

สำหรับข้อยกเว้นที่ตรวจไม่พบที่ไม่ทำให้เกมขัดข้อง (เช่น ข้อยกเว้น C# ที่ไม่ถูกตรวจจับในตรรกะเกม) คุณสามารถรายงาน Crashlytics SDK ว่าเป็นเหตุการณ์ที่ร้ายแรงโดยตั้งค่าพร็อพเพอร์ตี้ Crashlytics.ReportUncaughtExceptionsAsFatal เป็น true ซึ่งจะเริ่มต้น Crashlytics ในโปรเจ็กต์ Unity ระบบจะรายงานเหตุการณ์เหล่านี้ไปยัง Crashlytics แบบเรียลไทม์โดยที่ผู้ใช้ไม่ต้องรีสตาร์ทเกม

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

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

void Start() {
    // Since there is no try-block surrounding this call, if an exception is thrown,
    // it is considered unexpected.
    // Setting `Crashlytics.ReportUncaughtExceptionsAsFatal = true`
    // will ensure that such cases are reported as fatals.
    thirdPartyMethodThatMayThrow();
}

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

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

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

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

คุณรับรายงานหน่วยความจำของ GWP-ASan ได้หากแอปใช้ Crashlytics SDK ล่าสุดสำหรับ Unity (v10.7.0 ขึ้นไป) และ เปิดใช้ GWP-ASan อย่างชัดแจ้ง (กำหนดให้คุณต้องแก้ไขไฟล์ Manifest ของแอป Android) หากมีโค้ด C++ ในแอป ให้ทดสอบการตั้งค่า GWP-ASan โดยใช้ตัวอย่างโค้ดแบบเนทีฟในเอกสารประกอบของ Android

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

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

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

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

Crashlytics.SetCustomKey(string key, string value);

เพิ่มข้อความบันทึกที่กำหนดเอง

ข้อความที่บันทึกจะเชื่อมโยงกับข้อมูลข้อขัดข้องและปรากฏในแดชบอร์ด Firebase Crashlytics เมื่อดูข้อขัดข้องที่เจาะจง

Crashlytics.Log(string message);

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

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

Crashlytics.SetUserId(string identifier);

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

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

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

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

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