התאמה אישית של דוחות הקריסה ב-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. השגיאות האלה שקשורות לזיכרון יכולות להיות משויכות לפגיעה בזיכרון באפליקציה, שזה הגורם העיקרי לפרצות אבטחה באפליקציות.

  • אפשר לראות את הנתונים האלה בכרטיסייה החדשה 'Memory stack traces' (מעקב אחר הקצאת זיכרון) כשלוחצים על פרטי בעיה בלוח הבקרה Crashlytics.

  • אפשר גם להשתמש באות ובמסנן החדשים 'דוח GWP-ASan' כדי לראות במהירות את כל הבעיות שקשורות לנתונים האלה.

אפשר לקבל דוחות זיכרון של GWP-ASan אם האפליקציה משתמשת בגרסה העדכנית ביותר של Crashlytics SDK ל-Unity (גרסה 10.7.0 ואילך) והתכונה GWP-ASan מופעלת בה באופן מפורש (נדרש שינוי במניפסט של אפליקציית 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);

אחזור יומנים של נתיבי ניווט

יומני נתוני נתיב (breadcrumb) מאפשרים לכם להבין טוב יותר את האינטראקציות שהיו למשתמש עם האפליקציה לפני קריסה, אירוע לא קטלני או אירוע ANR. היומנים האלה יכולים לעזור כשמנסים לשחזר בעיה ולנפות באגים.

היומנים של נתיבי הניווט מבוססים על Google Analytics, ולכן כדי לקבל אותם צריך להפעיל את Google Analytics בפרויקט Firebase ולהוסיף את Firebase SDK ל-Google Analytics לאפליקציה. אחרי שממלאים את הדרישות האלה, היומנים של נתיבי הניווט נכללים אוטומטית בנתוני האירוע בכרטיסייה יומנים כשמציגים את פרטי הבעיה.

Analytics SDK מתעד באופן אוטומטי את האירוע screen_view מה שמאפשר להציג ביומני ה-breadcrumb רשימה של מסכים שנצפו לפני הקריסה, האירוע הלא קטלני או האירוע מסוג ANR. יומן של נתיב ניווט מכיל פרמטר firebase_screen_class.screen_view

יומני נתיב הניווט כוללים גם אירועים מותאמים אישית שאתם מתעדים באופן ידני במהלך הסשן של המשתמש, כולל נתוני הפרמטרים של האירוע. הנתונים האלה יכולים לעזור להציג סדרה של פעולות משתמש שהובילו לקריסה, לאירוע לא קטלני או לאירוע ANR.

חשוב לדעת שאפשר לשלוט באיסוף ובשימוש בנתוני Google Analytics, כולל הנתונים שמאכלסים את יומני הנתיבים.

הפעלת דיווח על הסכמה

כברירת מחדל, Crashlytics אוסף באופן אוטומטי דוחות קריסה לגבי כל המשתמשים באפליקציה. כדי לתת למשתמשים יותר שליטה על הנתונים שהם שולחים, אפשר לאפשר להם להביע הסכמה לשליחת דוחות על קריסות.

כדי להשבית את האיסוף האוטומטי רק עבור משתמשים נבחרים, צריך לקרוא ל-Crashlytics data collection override (שינוי ברירת המחדל של איסוף הנתונים) בזמן הריצה. ערך ההחלפה נשמר בכל ההפעלות הבאות של האפליקציה, כך ש-Crashlytics יכול לאסוף דוחות באופן אוטומטי עבור המשתמש הזה.

Crashlytics.IsCrashlyticsCollectionEnabled = true

אם המשתמש יבחר בהמשך להפסיק את איסוף הנתונים, תוכלו להעביר את הערך false כערך ברירת המחדל. הערך הזה יחול בפעם הבאה שהמשתמש יפעיל את האפליקציה, וימשיך לחול בכל ההפעלות הבאות של האפליקציה על ידי אותו משתמש.

ניהול נתונים של תובנות לגבי קריסות

התובנות לגבי קריסות עוזרות לכם לפתור בעיות על ידי השוואה בין עקבות מחסנית (stack traces) אנונימיים שלכם לבין עקבות מאפליקציות אחרות ב-Firebase, ומודיעות לכם אם הבעיה שלכם היא חלק ממגמה רחבה יותר. במקרים רבים, Crash Insights מספק גם מקורות מידע שיעזרו לכם לנפות באגים בקריסה.

התכונה 'תובנות לגבי קריסות' משתמשת בנתוני קריסות מצטברים כדי לזהות מגמות נפוצות של יציבות. אם אתם לא רוצים לשתף את נתוני האפליקציה, אתם יכולים לבטל את ההסכמה לשיתוף נתונים ב-Crash Insights. כדי לעשות זאת, פותחים את התפריט Crash Insights בחלק העליון של רשימת הבעיות Crashlytics ב-Firebase Console.