自訂您的 Firebase Crashlytics 崩潰報告

在 Crashlytics 儀表板中,您可以點擊問題並取得詳細的事件報告。您可以自訂這些報告,以幫助您更好地了解應用程式中發生的情況以及報告給 Crashlytics 的事件的情況。

  • 如果您的應用程式使用適用於 Google Analytics 的 Firebase SDK,則會自動取得麵包屑日誌。這些日誌可讓您了解導致應用程式中發生 Crashlytics 收集的事件的使用者操作。

  • 關閉自動崩潰報告並為用戶啟用選擇加入報告。請注意,預設情況下,Crashlytics 會自動收集應用程式的所有使用者的崩潰報告。

報告異常狀況

報告捕獲的異常

如果出現預期的異常,您可以讓 Crashlytics SDK 將它們報告為非致命事件。這些事件會記錄在裝置上,然後與下一個致命事件報告一起發送,或在最終用戶重新啟動遊戲時發送。

您可以使用以下方法在 C# 中記錄例外狀況:

Crashlytics.LogException(Exception ex);

您可以在遊戲的 try/catch 區塊中記錄預期的異常:

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

報告未捕獲的異常

對於不會導致遊戲崩潰的未捕獲異常(例如,遊戲邏輯中未捕獲的 C# 異常),您可以在 Unity 專案中初始化 Crashlytics時將Crashlytics.ReportUncaughtExceptionsAsFatal屬性設為true ,讓 Crashlytics SDK 將它們報告為致命事件。這些事件會即時報告給 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 報告以調試記憶體損壞問題

對於使用 IL2CPP 的 Android 應用程序,Crashlytics 可以透過收集 GWP-ASan 報告來幫助您調試本機記憶體錯誤引起的崩潰。這些與記憶體相關的錯誤可能與應用程式內的記憶體損壞有關,這是應用程式安全漏洞的主要原因。

  • 當您點擊Crashlytics 儀表板中的問題詳細資訊時,您可以在新的「記憶體堆疊追蹤」標籤中查看此資料。

  • 您也可以使用新的「GWP-ASan 報告」訊號和篩選器來快速查看此資料的所有問題。

如果您的應用程式使用最新的 Crashlytics SDK for Unity (v10.7.0+) 並明確啟用了 GWP-ASan (需要您修改 Android 應用程式清單),則可以獲得 GWP-ASan 記憶體報告。如果您的應用程式中有任何 C++ 程式碼,您可以使用Android 文件中的範例本機程式碼來測試您的 GWP-ASan 設定。

新增自訂鍵

自訂鍵可協助您取得應用程式導致崩潰的特定狀態。您可以將任意鍵/值對與崩潰報告關聯,然後使用自訂鍵在 Firebase 控制台中搜尋和篩選崩潰報告。

  • Crashlytics 儀表板中,您可以搜尋與自訂鍵相符的問題。
  • 當您在控制台中查看特定問題時,您可以查看每個事件的關聯自訂鍵( “鍵”子選項卡),甚至可以按自訂鍵過濾事件(頁面頂部的“過濾器”功能表)。

多次呼叫時,現有鍵的新值將更新該值,並且在記錄崩潰時僅捕獲最新值。

Crashlytics.SetCustomKey(string key, string value);

新增自訂日誌訊息

記錄的訊息與您的崩潰資料相關聯,並且在查看特定當機時在 Firebase Crashlytics 儀表板中可見。

Crashlytics.Log(string message);

設定用戶標識符

您可以使用 ID 號碼、令牌或雜湊值來唯一標識應用程式的最終用戶,而無需披露或傳輸他們的任何個人資訊。您也可以將其設為空白字串來清除該值。查看特定當機時,此值會顯示在 Firebase Crashlytics 儀表板中。

Crashlytics.SetUserId(string identifier);

取得麵包屑日誌

麵包屑日誌可以讓您更了解使用者與您的應用程式之間的交互,從而導致崩潰、非致命或 ANR 事件。當嘗試重現和偵錯問題時,這些日誌會很有幫助。

麵包屑日誌由 Google Analytics 提供支援,因此要取得麵包屑日誌,您需要為您的 Firebase 專案啟用 Google Analytics ,並將適用於 Google Analytics 的 Firebase SDK 新增至您的應用程式。滿足這些要求後,當您查看問題的詳細資訊時,麵包屑日誌將自動包含在「日誌」標籤中的事件資料中。

Analytics SDK會自動記錄screen_view事件,該事件使麵包屑日誌能夠顯示在崩潰、非致命或 ANR 事件之前查看的螢幕清單。 screen_view麵包屑日誌包含firebase_screen_class參數。

麵包屑日誌還填入了您在使用者工作階段中手動記錄的任何自訂事件,包括事件的參數資料。此數據可以幫助顯示導致崩潰、非致命或 ANR 事件的一系列使用者操作。

請注意,您可以控制 Google Analytics 資料的收集和使用,其中包括填充麵包屑日誌的資料。

啟用選擇加入報告

預設情況下,Crashlytics 會自動收集應用程式的所有使用者崩潰的報告。您可以讓用戶選擇報告崩潰,從而更好地控制他們發送的資料。

若要停用自動收集並僅為選定的使用者初始化 Crashlytics,請在執行時呼叫 Crashlytics 資料收集覆蓋。覆蓋值在應用程式啟動時持續存在,因此 Crashlytics 可以自動收集報告。若要退出自動崩潰報告,請傳遞false作為覆蓋值。當設定為false時,新值直到下次執行應用程式時才會套用。

Crashlytics.IsCrashlyticsCollectionEnabled = true

管理崩潰洞察數據

Crash Insights 透過將匿名堆疊追蹤與其他 Firebase 應用程式的追蹤進行比較來幫助您解決問題,並讓您知道您的問題是否屬於更大趨勢的一部分。對於許多問題,Crash Insights 甚至提供資源來幫助您調試崩潰。

崩潰洞察使用聚合的崩潰資料來識別常見的穩定性趨勢。如果您不想共享應用程式的數據,可以從Firebase 控制台Crashlytics 問題清單頂部的Crash Insights選單中選擇退出 Crash Insights。