錯誤報告包含裝置記錄、堆疊追蹤和其他診斷資訊,可協助找出並修正應用程式中的錯誤。如要從裝置擷取錯誤報告,您可以使用裝置的「取得錯誤報告」開發人員選項、Android Emulator 選單,或者開發機器的 adb bugreport
指令。
![](https://developer.android.com/static/studio/images/run/dev-options-pixel_2x_cropped.png?authuser=2&hl=zh-tw)
圖 1 裝置上的開發人員選項。
如要擷取錯誤報告,您必須先在裝置上啟用開發人員選項,才能使用「取得錯誤報告」選項。
擷取裝置的錯誤報告
![](https://developer.android.com/static/studio/images/run/dev-options-take-bug-report_2x.png?authuser=2&hl=zh-tw)
圖 2. 錯誤報告已備妥。
如要直接從裝置擷取錯誤報告,請按照下列步驟操作:
- 啟用開發人員選項。
- 在「Developer options」中,輕觸「Take bug report」。
- 選取想要的錯誤報告類型,然後輕觸「Report」。
稍後您會收到錯誤報告已備妥的通知,如圖 2 所示。
- 如要分享錯誤報告,請輕觸通知。
透過 Android Emulator 擷取錯誤報告
在 Android Emulator 中,您可以使用擴充控制項中的回報錯誤功能:
- 按一下 Emulator 面板中的「More」圖示
。
在「Extended controls」視窗中,選取「Bug Report」。
您可以在開啟的畫面中查看錯誤報告詳細資料,例如螢幕截圖、AVD 設定資訊和錯誤報告記錄。此外,也可以輸入含有重現步驟的訊息,一併儲存在報表中。
等待錯誤報告收集完成,然後按一下「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 檔案包含 version.txt
中繼資料檔案,內含 Android 版本字母。當 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」。