自訂 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 SDK 回報這些例外狀況 視為嚴重事件,方法是將 對您Crashlytics.ReportUncaughtExceptionsAsFatal所擁有的true屬性 在 Unity 專案中初始化 Crashlytics ,直接在 Google Cloud 控制台實際操作。 這些事件會即時回報至 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 (10.7.0 以上版本),且已明確啟用 GWP-ASan (需要修改 Android 應用程式資訊清單),您就能取得 GWP-ASan 記憶體報告。如果應用程式有任何 C++ 程式碼,您可以使用 Android 說明文件中的原生程式碼範例範例

新增自訂鍵

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

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

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

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,並在應用程式中新增 Google Analytics 的 Firebase SDK。滿足這些需求後,您查看問題詳細資料時,系統就會在「Logs」分頁中自動將麵包屑記錄與事件資料一併顯示。

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