自訂 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# 例外狀況),您可以將 Crashlytics.ReportUncaughtExceptionsAsFatal 屬性設為 true,並在在 Unity 專案中初始化 Crashlytics,讓 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 報告」信號和篩選器,快速查看這項資料的所有問題。

如果您的應用程式使用最新的 Unity 專用 Crashlytics SDK (v10.7.0 以上版本),且已明確啟用 GWP-ASan (須修改 Android 應用程式資訊清單),您就能取得 GWP-ASan 記憶體報告。如果您的應用程式有任何 C++ 程式碼,請使用 Android 說明文件中的範例程式碼測試 GWP-ASan 設定。

新增自訂鍵

自訂鍵可協助您取得應用程式的特定狀態,因此會導致當機。將任意鍵/值組合與當機報告建立關聯,然後在 Firebase 控制台中使用自訂鍵搜尋及篩選當機報告。

  • 您可以在 Crashlytics 資訊主頁中搜尋與自訂鍵相符的問題。
  • 在主控台中查看特定問題時,您可以查看每個事件的相關自訂鍵 (「Keys」子分頁),甚至按自訂鍵篩選事件 (頁面頂端的「篩選器」選單)。

多次呼叫時,現有鍵的新值將更新值,且在記錄當機時只會擷取最新的值。

Crashlytics.SetCustomKey(string key, string value);

新增自訂記錄訊息

記錄的訊息會與當機資料建立關聯,並在查看特定當機情形時,顯示在 Firebase Crashlytics 資訊主頁中。

Crashlytics.Log(string message);

設定使用者 ID

您可以使用 ID 號碼、權杖或雜湊值來識別應用程式的使用者,而不必揭露或傳輸任何個人資訊。您也可以將這個值設為空白字串來清除。查看特定當機事件時,Firebase Crashlytics 資訊主頁會顯示這個值。

Crashlytics.SetUserId(string identifier);

取得導覽標記記錄

導覽標記記錄可讓您進一步瞭解使用者在發生當機、一般或 ANR 事件時,與應用程式進行的互動。這類記錄檔有助於嘗試重現問題並進行偵錯。

導覽標記記錄採用 Google Analytics (分析) 技術,因此您需要為 Firebase 專案啟用 Google Analytics (分析),並在應用程式中新增 Firebase SDK for Google Analytics。只要符合這些要求,系統就會在「記錄檔」分頁中自動加入導覽標記記錄,並在問題詳細資料中附上事件資料。

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 應用程式的追蹤記錄,並讓您瞭解問題是否屬於較大的趨勢中。針對許多問題,當機深入分析甚至提供資源,協助您偵錯當機問題。

當機深入分析會使用匯總的當機資料找出常見的穩定性趨勢。 如果您不想提供應用程式資料,可以前往 Firebase 控制台,在 Crashlytics 問題清單頂端的「當機深入分析」選單中,選擇停用「當機深入分析」。