Ghi lại và đọc báo cáo lỗi

Báo cáo lỗi chứa nhật ký thiết bị, dấu vết ngăn xếp và thông tin chẩn đoán khác để giúp bạn tìm và sửa lỗi trong ứng dụng của mình. Bạn có thể ghi lại báo cáo lỗi từ thiết bị bằng cách sử dụng tuỳ chọn cho nhà phát triển Tạo báo cáo lỗi trên thiết bị, trình đơn của Trình mô phỏng Android hoặc lệnh adb bugreport trên máy phát triển của bạn.

Hình 1. Tuỳ chọn cho nhà phát triển trên thiết bị.

Để tạo báo cáo lỗi, bạn phải bật Tuỳ chọn cho nhà phát triển trên thiết bị để truy cập vào tuỳ chọn Tạo báo cáo lỗi.

Ghi lại báo cáo lỗi từ thiết bị

Hình 2. Báo cáo lỗi đã sẵn sàng.

Để tạo báo cáo lỗi ngay trên thiết bị của bạn, hãy làm như sau:

  1. Bật Tuỳ chọn cho nhà phát triển
  2. Trong phần Tuỳ chọn cho nhà phát triển, hãy nhấn vào Tạo báo cáo lỗi.
  3. Chọn loại báo cáo lỗi mà bạn muốn rồi nhấn vào Báo cáo.

    Sau giây lát, bạn sẽ nhận được thông báo cho biết báo cáo lỗi đã sẵn sàng, như minh hoạ trong hình 2.

  4. Để chia sẻ báo cáo lỗi, hãy nhấn vào thông báo.

Ghi lại báo cáo lỗi từ Trình mô phỏng Android

Trong Trình mô phỏng Android, bạn có thể sử dụng tính năng File a bug (Gửi lỗi) trong chế độ điều khiển mở rộng:

  1. Nhấp vào biểu tượng Xem thêm trong bảng điều khiển của Trình mô phỏng.
  2. Trong cửa sổ Extended controls (Chế độ điều khiển mở rộng), hãy chọn Bug report (Báo cáo lỗi).

    Thao tác này sẽ mở ra một màn hình mà bạn có thể xem thông tin chi tiết về báo cáo lỗi, chẳng hạn như ảnh chụp màn hình, thông tin cấu hình AVD và nhật ký báo cáo lỗi. Bạn cũng có thể nhập một thông điệp bằng các bước mô phỏng để lưu cùng với báo cáo.

  3. Đợi cho đến khi báo cáo lỗi dừng thu thập, sau đó nhấp vào Save Report (Lưu báo cáo).

Ghi lại báo cáo lỗi bằng adb

Nếu chỉ có một thiết bị kết nối, bạn có thể tạo báo cáo lỗi bằng adb như sau:

$ adb bugreport E:\Reports\MyBugReports

Nếu bạn không chỉ định đường dẫn cho báo cáo lỗi, thì báo cáo lỗi đó sẽ được lưu vào thư mục cục bộ.

Nếu kết nối nhiều thiết bị, bạn phải chỉ định thiết bị bằng tuỳ chọn -s. Chạy các lệnh adb sau đây để nhận số sê-ri của thiết bị và tạo báo cáo lỗi:

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

$ adb -s 8XV7N15C31003476 bugreport

Lưu báo cáo lỗi cũ

Theo mặc định, các báo cáo lỗi được lưu tại /bugreports và có thể được xem bằng lệnh sau:

$ 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

Sau đó, bạn có thể kéo tệp ZIP thông qua adb pull:

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

Kiểm tra tệp ZIP chứa báo cáo lỗi

Theo mặc định, tệp ZIP sẽ có tên là bugreport-BUILD_ID-DATE.zip. Tệp ZIP có thể chứa nhiều tệp, nhưng tệp quan trọng nhất là bugreport-BUILD_ID-DATE.txt. Đây là báo cáo lỗi, chứa kết quả chẩn đoán cho các dịch vụ hệ thống (dumpsys), nhật ký lỗi (dumpstate) và nhật ký thông báo hệ thống (logcat). Thông báo hệ thống bao gồm dấu vết ngăn xếp khi thiết bị gặp lỗi và thông báo được ghi từ tất cả các ứng dụng có lớp Log.

Tệp ZIP chứa một tệp siêu dữ liệu version.txt có chứa thư phát hành của Android. Khi bạn bật systrace, tệp ZIP cũng sẽ chứa tệp systrace.txt. Công cụ Systrace giúp bạn phân tích hiệu quả hoạt động của ứng dụng bằng cách ghi lại và hiển thị thời gian thực thi của các quy trình ứng dụng và các quy trình khác của hệ thống Android.

Công cụ dumpstate sao chép các tệp từ hệ thống tệp của thiết bị vào tệp ZIP trong thư mục FS để bạn có thể tham khảo. Ví dụ: một tệp /dirA/dirB/fileC trong thiết bị sẽ tạo một mục FS/dirA/dirB/fileC trong tệp ZIP.

Hình 3. Cấu trúc tệp báo cáo lỗi.

Để biết thêm thông tin, hãy xem bài viết Đọc báo cáo lỗi.

Nhận báo cáo của người dùng

Việc ghi lại các báo cáo lỗi rất hữu ích khi bạn đang sử dụng ứng dụng, nhưng người dùng cuối không thể dễ dàng chia sẻ các loại báo cáo lỗi này với bạn. Để nhận báo cáo sự cố có dấu vết ngăn xếp từ người dùng trong thực tế, hãy tận dụng các tính năng Báo cáo lỗi Firebase và Google Play.

Google Play Console

Bạn có thể nhận báo cáo từ Google Play Console để xem dữ liệu về các sự cố và lỗi ứng dụng không phản hồi (ANR) từ người dùng đã cài đặt ứng dụng của bạn trên Google Play. Dữ liệu có sẵn từ 6 tháng trước.

Để biết thêm thông tin, hãy xem bài viết Xem các sự cố và lỗi ứng dụng không phản hồi (ANR) trong phần trợ giúp của Play Console.

Báo cáo lỗi Firebase

Báo cáo Firebase Crashlytics tạo báo cáo chi tiết về các lỗi trong ứng dụng của bạn. Các lỗi được nhóm thành vấn đề dựa trên dấu vết ngăn xếp tương tự và được phân loại theo mức độ ảnh hưởng đến người dùng. Ngoài việc nhận báo cáo tự động, bạn có thể ghi nhật ký các sự kiện tuỳ chỉnh để giúp nắm bắt các bước dẫn đến sự cố.

Để bắt đầu nhận báo cáo sự cố từ người dùng bất kỳ, hãy thêm phần phụ thuộc Firebase vào tệp build.gradle. Để biết thêm thông tin, hãy xem bài viết Firebase Crashlytics.