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


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

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

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

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

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

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

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

Crashlytics.LogException(Exception ex);

คุณสามารถบันทึกข้อยกเว้นที่คาดไว้ในบล็อก try/catch ของเกมได้ ดังนี้

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

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