버그 신고

버그 신고를 완료하려면 이 페이지의 단계를 따르세요. 버그를 수정하는 리소스가 제한되어 있으므로 완전한 정보가 있는 버그에 우선순위가 부여됩니다. 불완전한 버그 신고는 종료됩니다. 이 경우 추가 정보를 포함하여 버그를 다시 제출하세요.

이미 수정된 버그를 신고하지 않도록 하려면 최신 버전의 도구를 사용해야 합니다. Android 스튜디오 Issue Tracker에서 비슷한 문제를 검색하면 발생한 문제가 이미 신고되었는지도 확인할 수 있습니다.

버그 신고 방법

버그를 신고하려면 다음 단계를 따르세요.

  1. Android 스튜디오에서 버그 신고를 열려면 Help > Submit Feedback을 선택합니다.

    이는 버그를 시작하는 가장 쉬운 방법입니다. 사용 중인 Android 스튜디오 버전, Kotlin 또는 자바 버전, 시스템 정보가 버그 신고에 채워지므로 문제를 제대로 재현하는 데 필요한 정보를 확보할 수 있습니다.

    여기에 버그를 제출하고 버전 정보를 직접 추가할 수도 있습니다.

  2. Google에서 문제를 디버그할 수 있도록 진단 보고서를 첨부하세요. 진단 보고서 ZIP 파일을 생성하려면 Help > Collect Logs and Diagnostic Data를 클릭합니다.

  3. 문제를 재현하는 정확한 단계를 설명합니다. 코드 스니펫, 버그를 재현하는 데 사용할 수 있는 GitHub 프로젝트, 관찰 중인 항목의 스크린샷 또는 녹화 파일을 비롯하여 최대한 많은 정보를 제출합니다.

  4. 문제를 자세히 설명해 주세요. 기대했던 결과와 관찰한 결과를 설명합니다.

  5. 버그 신고를 설명하는 제목을 선택합니다. 구체적으로 설명하는 제목을 사용하면 문제별로 더 쉽게 정렬할 수 있습니다.

특정 버그의 경우 다음 섹션에 설명된 대로 추가 정보가 필요합니다.

Android 스튜디오 버그에 필요한 세부정보

Android 스튜디오 관련 버그를 신고하려면 이 섹션에 설명된 대로 추가 정보를 포함하세요.

IDE가 멈추는 경우

IDE 자체가 매우 느려지거나 완전히 멈춰버리면 이 페이지에 설명된 대로 스레드 덤프를 몇 개 생성하여 버그 신고에 첨부합니다. 스레드 덤프는 IDE가 어떤 작업을 하고 있어서 속도를 저하하는지 보여줍니다.

IDE가 느리지만 멈추지 않은 경우 idea.log 파일을 버그 신고에 첨부합니다. 파일을 첨부하려면 Help > Collect Logs and Diagnostic Data 또는 Help > Show Log in Files(macOS에서는 Help > Show Log in Finder)를 선택합니다. 이 파일은 IDE에서 로그에 오류가 발생했는지를 보여줍니다.

CPU 프로필을 사용하여 속도 저하 진단

Android 스튜디오에서 속도가 느려지는 경우 CPU 프로필이 문제 진단에 도움이 되는 경우가 있습니다.

다음 단계에 따라 Android 스튜디오 Performance Testing 플러그인을 사용하여 CPU 프로필을 캡처합니다.

  1. 플러그인을 설치합니다.

    • Android 스튜디오의 플러그인 마켓플레이스에서 'Performance Testing'을 검색합니다.
    • 또는 플러그인 웹사이트에서 Android 스튜디오와 호환되는 버전을 다운로드할 수 있습니다.
  2. CPU 프로필을 만듭니다.

    1. Android 스튜디오가 느려지는 것처럼 보이면 Start CPU Usage Profiling을 선택합니다.
    2. 지연 시간 문제가 발생한 몇몇 작업(코드 완성, 입력 및 작업할 부분 강조 표시 대기 등)을 반복합니다.
    3. Stop CPU Usage Profiling을 클릭합니다.
  3. 프로필 파일을 공유합니다.

    snapshot-NNN 형식의 CPU 스냅샷 파일 이름을 제공하는 풍선이 표시됩니다. 버그 신고에 스냅샷 파일을 공유하세요.

IDE에서 메모리가 부족한 경우

Android 스튜디오의 메모리 문제는 재현하고 신고하기 어려울 수 있습니다. 이 문제를 해결하는 데 도움이 되도록 Android 스튜디오에는 메모리 사용량 보고서가 포함되어 있으며, 이 보고서를 Android 스튜디오팀에 보내 메모리 문제의 원인을 식별하는 데 도움을 줄 수 있습니다.

메모리 사용량 보고서 실행

메모리 사용량 보고서를 실행하려면 다음 단계를 따르세요.

  1. 메뉴 바에서 Help > Analyze Memory Usage를 클릭합니다.

    Android 스튜디오에서 힙을 덤프하고 IDE를 다시 시작하라는 메시지를 표시합니다. IDE를 다시 시작하면 힙 덤프 분석이 즉시 시작됩니다. IDE를 다시 시작하지 않으면 힙 덤프 분석은 다음에 Android 스튜디오를 실행할 때 시작됩니다. 두 경우 모두 그림 1과 같이 메모리 사용량 보고서를 검토할 준비가 되면 IDE에서 알려줍니다.

    메모리 사용량 보고서를 검토할 준비가 되었다고 나타내는 알림
    그림 1. 메모리 사용 보고서 알림
  2. Review Report를 클릭합니다.

    보고서를 보내기 전에 포함된 정보를 검토할 수 있습니다.

    메모리 사용량 보고서
    그림 2. 메모리 사용 보고서 분석
  3. 검토를 완료한 후 보고서 콘텐츠를 파일에 복사하고 버그를 신고할 때 이 파일을 첨부합니다.

    이렇게 보고서 정보를 제출하면 Android 스튜디오팀이 메모리 문제를 조사하는 동안 Issue Tracker를 사용하여 개발자와 소통할 수 있습니다.

IDE가 비정상 종료되거나 예외를 발생시키는 경우

다른 유형의 비정상 종료의 경우 Help > Collect Logs and Diagnostic Data 또는 Help > Show Log in Files(macOS에서는 Help > Show Log in Finder)를 선택하여 찾은 idea.log 파일을 첨부합니다.

스레드 덤프 생성

스레드 덤프는 JVM에서 실행 중인 모든 스레드의 출력입니다. 스레드별로 모든 스택 프레임의 출력이 포함됩니다. 이를 통해 IDE가 진행 중인 작업이 무엇인지 쉽게 알 수 있습니다. 특히 몇 초 간격으로 복수의 스레드 덤프를 생성하는 경우 확인이 더 쉬워집니다.

CPU가 느려지고 IDE가 매우 바쁜 버그나 IDE가 멈추는 듯한 버그의 경우, 스레드 덤프를 통해 어떤 코드에서 많은 작업이 진행 중인지 또는 어떤 스레드가 리소스를 경합 중이며 교착 상태를 유발하는지 정확히 찾아낼 수 있습니다.

JDK에서는 스레드 덤프를 생성하는 데 사용할 수 있는 jstack이라는 도구가 제공됩니다. 먼저 Android 스튜디오 프로세스의 프로세스 ID(PID)를 찾습니다. 이 경우 jps 명령어를 사용하세요.

Linux 또는 macOS:

jps -mv | grep studio

Windows:

jps -mv | findstr studio

다음과 같은 긴 줄이 출력됩니다.

$ jps -mv | grep studio
37605 -Dfile.encoding=UTF-8 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djna.nosys=true ...

첫 번째 숫자(이 예에서는 37605)는 프로세스 ID입니다.

그런 다음 스레드 덤프를 생성하고 dump.txt 파일에 저장합니다.

jstack -l pid >> dump.txt

이 명령이 작동하지 않는 경우 플랫폼별로 스레드 덤프를 생성하는 방법이 몇 가지 더 있습니다. 자세한 안내는 IntelliJ 지원을 참고하세요.

빌드 도구 및 Gradle 버그에 필요한 세부정보

빌드 도구 또는 Gradle 관련 버그를 신고하려면 문제를 보여 줄 수 있는 실제 또는 샘플 프로젝트를 첨부하여 필요한 모든 정보를 포함해야 합니다. 민감한 정보는 공유하기 전에 모두 삭제하세요.

프로젝트를 공유할 수 없는 경우 사용 중인 도구의 버전을 표시합니다. (버그를 신고하기 전에 최신 안정화 버전 또는 미리보기 버전을 사용해 보세요.) 도구 버전을 찾으려면 다음 단계를 따르세요.

  • Android Gradle 플러그인 버전:

    1. File > Project Structure를 선택합니다.
    2. Project를 클릭합니다.
    3. Android Gradle Plugin Version을 찾습니다.
  • Gradle 버전:

    1. File > Project Structure를 선택합니다.
    2. Project를 클릭합니다.
    3. Gradle Version을 찾습니다.
  • Android 스튜디오 버전:

    1. Help > About을 선택합니다.
    2. Android Studio Version을 찾습니다.

또한, 필요한 경우 다음 정보도 포함하세요.

  • 동작이 예기치 않게 이전 버전에서 현재 버전으로 변경된 경우, 두 버전을 모두 표시합니다.
  • 오류로 인해 빌드가 실패한 경우, 명령줄에서 --stacktrace 옵션(예: ./gradlew <task> --stacktrace)을 사용하여 빌드를 실행하고 버그 신고에 스택 트레이스를 제공합니다.
  • 빌드가 예상보다 오래 걸리는 경우 다음 중 하나를 시도합니다.
    • ./gradlew <task> --scan을 실행하고 생성된 Gradle 빌드 스캔을 버그 신고에 공유합니다.
    • ./gradlew <task> -Pandroid.enableProfileJson=true를 실행하고 <root-project>/build/android-profile 디렉터리에 생성된 Chrome-trace 파일을 공유합니다.

Android Emulator 버그의 세부정보

에뮬레이터의 확장 컨트롤을 사용하여 정보를 수집하고 버그를 신고하려면 다음 단계를 따르세요.

  1. 에뮬레이터 패널에서 More 를 클릭합니다.
  2. Extended controls 창에서 Bug Report를 선택합니다.

    이렇게 하면 버그 신고 세부정보(예: 스크린샷, AVD 구성 정보, 버그 신고 로그)가 포함된 화면이 열립니다. 재현하는 단계를 여기에서 입력할 수 있으며, 기다렸다가 다음 단계에서 생성되는 보고서에 재현 단계를 입력할 수도 있습니다.

  3. 버그 신고의 정보 수집이 완료될 때까지 기다린 후 Send to Google을 클릭합니다.

    버그 신고를 폴더에 저장할 수 있는 창이 열립니다. 브라우저가 열리고 여기서 필수 에뮬레이터 세부정보가 채워진 상태로 Google Issue Tracker에 보고서가 생성됩니다.

  4. 신고에서 버그 재현 단계와 같은 나머지 세부정보를 작성한 후 버그 신고를 생성할 때 저장된 파일을 첨부합니다.

아니면 다음 세부정보를 수동으로 입력합니다.

  • 에뮬레이터 버전

    1. 에뮬레이터에서 Extended controls를 엽니다.
    2. Help를 클릭합니다.
    3. About 탭을 클릭하여 Emulator version을 찾습니다.
  • Android SDK 도구 버전

    1. Tools > SDK Manager를 선택합니다.
    2. SDK Tools를 클릭합니다.
    3. Android SDK Tools를 찾습니다.
  • 호스트 CPU 모델

    • Linux의 경우: /proc/cpuinfo를 엽니다.
    • Windows의 경우: My Computer(내 컴퓨터)를 마우스 오른쪽 버튼으로 클릭하고 Properties(속성)를 선택합니다.
    • macOS의 경우: Apple 아이콘을 선택하고 About This Mac(이 Mac에 관하여)을 클릭합니다.
  • 기기 이름

    1. AVD Manager에서 기기에 맞는 Actions 열의 메뉴를 클릭하여 엽니다.
    2. View Details를 선택하거나 $avdname.avd/config.ini 파일을 엽니다.
    3. hw.device.name의 항목을 찾습니다. 예를 들면 hw.device.name=Nexus 5입니다.