Capture and read bug reports

A bug report contains device logs, stack traces, and other diagnosticinformation to help you find and fix bugs in your app. You can capture a bugreport from your device by using either the Take bug report developeroption on the device, the Android Emulator menu,or the adb bugreport command on your development machine.

Capture and read bug reports - 图1
Figure 1. Developer options

To take a bug report, you must haveDeveloper options enabled on yourdevice so you can access the Take bug report option.

Capture a bug report from a device

Capture and read bug reports - 图2
Figure 2. The bug report is ready

To get a bug report directly from your device, do the following:

  • Be sure you have DeveloperOptions enabled.
  • In Developer options, tap Take bug report.
  • Select the type of bug report you want and tap Report.
    After a moment you get a notification that the bug report is ready (see figure 2).

  • To share the bug report, tap the notification.

Capture a bug report from the Android Emulator

From the Android Emulator, you can use the File a bugfeature in the extended controls:

  • Click MoreCapture and read bug reports - 图3 in theemulator panel.
  • In the Extended controls window, select Bug report on the left.

This opens a screen where you can see the bug report details such as the screenshot, the AVD configuration info, and the bug report log. You can also type a message with reproduction steps to save with the report.

  • Wait for the bug report to finish collecting, and then click Save Report.

Capture a bug report using adb

If you have just one device connected, you can get a bugreport usingadb as follows:

  1. $ adb bugreport E:\Reports\MyBugReports

If you do not specify a path for the bugreport, it is saved tothe local directory.

If you have multiple devices connected, you must specify the device with the-s option. Run the following adb commands toget the device serial number and generate the bug report.

  1. $ adb devices
  2. List of devices attached
  3. emulator-5554 device
  4. 8XV7N15C31003476 device
  5.  
  6. $ adb -s 8XV7N15C31003476 bugreport

Inspect the bug report ZIP file

By default the ZIP file is calledbugreport-BUILD_ID-DATE.zip and itit may contain multiple files, but the most important file isbugreport-BUILD_ID-DATE.txt. Thisis the bug report and it containsdiagnostic output for system services (dumpsys), error logs (dumpstate),and system message logs (logcat). The system messages include stack traceswhen the device throws an error, and messages written from all apps with theLog class.

The ZIP file contains a version.txt metadata file that containsthe Android release letter, and when systrace is enabled, the ZIP file alsocontains a systrace.txt file. TheSystrace toolhelps analyze the performanceof your application by capturing and displaying execution times of yourapplication processes and other Android system processes.

The dumpstate tool copies files from the device’s filesysteminto the ZIP file under the FS folder so you can reference them. For example,a /dirA/dirB/fileC file in the device would generate anFS/dirA/dirB/fileC entry in the ZIP file.

Capture and read bug reports - 图4

Figure 3. Bug report file structure

For more information, seeReading bug reports.

Get reports from your users

Capturing bug reports as described above is helpful as you're using the appyourself, but your end-users can't easily share these types of bug reportswith you. To get crash reports with stack traces from real-world users,you should take advantage of Google Play's and Firebase's crash reportingfeatures.

Google Play Console

You can get reports from theGoogle Play Console to view data for crashes and application notresponding (ANR) errors from users who installed your app from Google Play.Data is available for the previous six months.

For more information, seeView crashes & application not responding (ANR) errors in Play Console help.

Firebase crash reporting

Firebase crash reporting creates detailed reports of the errors in your app.Errors are grouped into issues based on having similar stack traces, and triagedby the severity of impact on your users. In addition to automatic reports, youcan log custom events to help capture the steps leading to a crash.

You'll start receiving crash reports from any user by simply adding theFirebase dependencies to your build.gradle file. For more information, seeFirebase crash reporting.