擷取和讀取錯誤報告

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

錯誤報告的內容包含有裝置記錄、堆疊追蹤和其他診斷資訊,可協助您找出並修正錯誤。您可以使用裝置上的「Take bug report」 開發人員選項、Android 模擬器選單或 adb bugreport 指令,從裝置擷取錯誤報告。

圖 1.開發人員選項

如要擷取錯誤報告,您必須先在裝置上啟用開發人員選項,才能存取「Take bug report」選項。

擷取裝置的錯誤報告

圖 2. 錯誤報告已準備就緒

如要直接在裝置上取得錯誤報告,請按照下列步驟操作:

  1. 請確認已啟用「Developer options」。
  2. 在「Developer options」中,輕觸「Take bug report」
  3. 選取想要的錯誤報告類型,然後輕觸「Report」

    收到錯誤報告後,您會收到錯誤報告 (請參閱圖 2)。

  4. 如要分享錯誤報告,請輕觸通知。

透過 Android Emulator 擷取錯誤報告

在 Android Emulator 中,您可以使用擴充控制項中的回報錯誤功能:

  1. 按一下模擬器面板中的「More」
  2. 在「Extended controls」視窗中,選取左側的「Bug report」

    畫面上會開啟一個畫面,供您查看錯誤報告的詳細資料,例如螢幕截圖、AVD 設定資訊和錯誤報告記錄。您也可以輸入含有重新執行步驟的訊息,並儲存在報表中。

  3. 等待錯誤報告收集完成,然後按一下「Save Report」

使用 ADB 擷取錯誤報告

如果您僅連接一部裝置,可以使用 adb 取得錯誤報告,方法如下:

$ adb bugreport E:\Reports\MyBugReports

如果您未指定錯誤報告的路徑,系統會將該路徑儲存在本機目錄中。

如果您連接多部裝置,則必須使用 -s 選項來指定裝置。執行下列 adb 指令,取得裝置序號並產生錯誤報告。

$ adb devices
List of devices attached
emulator-5554      device
8XV7N15C31003476 device

$ adb -s 8XV7N15C31003476 bugreport

儲存舊版錯誤報告

錯誤報告預設是儲存在 /bugreports,以便檢視下列資訊:

$ adb shell ls /bugreports/
bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS-dumpstate_log-yyy.txt
bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS.zip
dumpstate-stats.txt

接著,您可以透過 adb pull 提取 ZIP 檔案,如下所示:

$ adb pull /bugreports/bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS.zip

檢查錯誤報告 ZIP 檔案

ZIP 檔案的預設名稱為 bugreport-BUILD_ID-DATE.zip,其中可能含有多個檔案,但最重要的檔案是 bugreport-BUILD_ID-DATE.txt。這份錯誤報告含有系統服務 (dumpsys)、錯誤記錄檔 (dumpstate) 和系統訊息記錄 (logcat) 的診斷輸出內容。系統訊息包含裝置擲回錯誤時的堆疊追蹤,以及所有使用 Log 類別的應用程式寫入的訊息。

ZIP 檔案包含內含 Android 版本資訊的 version.txt 中繼資料檔案,且在啟用 systrace 的情況下,ZIP 檔案也包含 systrace.txt 檔案。Systrace 工具可協助您擷取並顯示應用程式處理程序和其他 Android 系統程序的執行時間,協助分析應用程式的效能。

dumpstate 工具會將裝置檔案系統中的檔案複製到 FS 資料夾下的 ZIP 檔案,方便您參照。例如,裝置上的 /dirA/dirB/fileC 檔案會產生 ZIP 檔案中的 FS/dirA/dirB/fileC 項目。

圖 3. 錯誤報告檔案結構

詳情請參閱「讀取錯誤報告」。

取得使用者回報的資訊

以自己使用應用程式為例,擷取上述錯誤報告相當實用,但您的使用者無法輕鬆與您分享這類錯誤報告。如要透過實際使用者的堆疊追蹤取得當機報告,請善用 Google Play 和 Firebase 的當機回報功能。

Google Play 管理中心

您可以前往Google Play 管理中心即可查看從 Google Play 安裝應用程式的使用者所發生的當機和應用程式無回應 (ANR) 錯誤資料。您可以查看過去六個月內的資料。

詳情請參閱 Play 管理中心說明中心的「檢視當機與應用程式無回應 (ANR) 錯誤」。

Firebase 當機回報

Firebase Crashlytics 報表會針對您應用程式中的錯誤建立詳細報表。系統會根據類似堆疊追蹤將錯誤分為不同問題,並依據對使用者的影響力嚴重性進行分類。除了收到自動報告外,您也可以記錄自訂事件,這些資訊將有助於找出造成錯誤發生的過程。

您只要在 build.gradle 檔案中新增 Firebase 依附元件,即可開始收到所有使用者的當機報告。詳情請參閱「Firebase Crashlytics」。