버그 신고 캡처 및 읽기

버그 신고에는 앱에서 버그를 찾아 수정하는 데 도움이 되는 기기 로그, 스택 트레이스 및 기타 진단 정보가 포함됩니다. 기기에서 버그 신고를 캡처하려면 기기의 버그 신고 개발자 옵션 또는 Android Emulator 메뉴를 사용하거나 개발 머신에서 adb bugreport 명령어를 사용하세요.

그림 1. 기기의 개발자 옵션

버그를 신고하려면 기기에서 개발자 옵션을 사용 설정해야 버그 신고 옵션에 액세스할 수 있습니다.

기기에서 버그 신고 캡처

그림 2. 버그 신고를 사용할 수 있음

기기에서 직접 버그 신고를 받으려면 다음 단계를 따르세요.

  1. 개발자 옵션을 사용 설정합니다.
  2. 개발자 옵션에서 버그 신고를 탭합니다.
  3. 원하는 버그 신고 유형을 선택하고 신고를 탭합니다.

    잠시 후 그림 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입니다. ZIP 파일에는 여러 파일이 포함될 수 있지만 가장 중요한 파일은 bugreport-BUILD_ID-DATE.txt입니다. 이 파일은 버그 신고이며 시스템 서비스(dumpsys), 오류 로그(dumpstate) 및 시스템 메시지 로그(logcat)에 관한 진단 출력을 포함합니다. 시스템 메시지에는 기기에 오류가 발생할 당시의 스택 트레이스와 Log 클래스를 사용하는 모든 앱에서 작성된 메시지가 포함됩니다.

ZIP 파일에는 Android 출시 문자가 포함된 version.txt 메타데이터 파일이 포함되어 있습니다. systrace를 사용 설정하면 ZIP 파일에 systrace.txt 파일도 포함됩니다. Systrace 도구를 사용하면 앱 프로세스와 다른 Android 시스템 프로세스의 실행 시간을 캡처하고 표시하여 앱의 성능을 분석하는 데 도움이 됩니다.

dumpstate 도구는 파일을 참조할 수 있도록 기기의 파일 시스템에서 ZIP 파일의 FS 폴더 아래에 파일을 복사합니다. 예를 들어, 기기의 /dirA/dirB/fileC 파일은 ZIP 파일에 FS/dirA/dirB/fileC 항목을 생성하게 됩니다.

그림 3. 버그 신고 파일 구조

자세한 내용은 버그 신고 읽기를 참고하세요.

사용자로부터 보고서 받기

버그 신고 캡처는 앱을 직접 사용해 보는 개발자 입장에서는 유용하지만, 최종 사용자가 이러한 유형의 버그 신고를 개발자와 공유하기는 쉽지 않습니다. 실제 사용자의 스택 트레이스가 포함된 비정상 종료 보고서를 받아 보려면 Google Play 및 Firebase 비정상 종료 보고 기능을 활용하세요.

Google Play Console

Google Play Console에서 보고서를 받아 Google Play에서 앱을 설치한 사용자에게서 발생한 비정상 종료와 애플리케이션 응답 없음(ANR) 오류에 관한 데이터를 확인할 수 있습니다. 지난 6개월 동안의 데이터를 확인할 수 있습니다.

자세한 내용은 Play Console 도움말에서 비정상 종료 및 애플리케이션 응답 없음(ANR) 오류 보기를 참고하세요.

Firebase 비정상 종료 보고

Firebase Crashlytics 보고는 앱에서 발생한 오류에 관해 세부정보 보고서를 만듭니다. 오류는 비슷한 스택 트레이스를 기반으로 문제별로 그룹화되며 사용자에게 미치는 영향의 심각도에 따라 분류됩니다. 자동 보고서 외에도 맞춤 이벤트를 기록하여 비정상 종료가 발생하는 단계를 캡처할 수 있습니다.

모든 사용자로부터 비정상 종료 보고서를 수신하려면 build.gradle 파일에 Firebase 종속 항목을 추가해야 합니다. 자세한 내용은 Firebase Crashlytics를 참고하세요.