在 Crashlytics 資訊主頁中,您可以點選問題,取得詳細的事件報表。您可以自訂這些報表,進一步瞭解應用程式的狀況,以及向 Crashlytics 回報事件時的相關情況。
如果應用程式使用 Firebase SDK for 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.ReportUncaughtExceptionsAsFatal
屬性設為 true
,讓 Crashlytics SDK 將這些例外狀況回報為嚴重事件。在 Unity 專案中初始化 Crashlytics 時,請設定這項屬性。
這些事件會即時回報給 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 Unity SDK (10.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
您可以使用 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.IsCrashlyticsCollectionEnabled = true
如果使用者之後選擇停用資料收集功能,您可以傳遞 false
做為覆寫值,系統會在使用者下次啟動應用程式時套用該值,並在該使用者後續啟動應用程式時持續套用。
管理當機深入分析資料
當機深入分析功能會比較您應用程式的匿名堆疊追蹤記錄與其他 Firebase 應用程式的追蹤記錄,並在您的問題屬於較大規模的趨勢時通知您,協助您解決問題。對於許多問題,當機情況深入分析甚至會提供資源,協助您偵錯當機問題。
當機深入分析會使用匯總當機資料,找出常見的穩定性趨勢。 如不想分享應用程式資料,可以前往 Firebase 管理中心,在Crashlytics問題清單頂端的「當機深入分析」選單中停用這項功能。