Winscope로 트레이스 캡처

로컬에서 Winscope를 실행하거나 웹 서버에서 액세스합니다.

Winscope를 사용하여 로컬 개발 및 디버깅을 위한 트레이스를 캡처할 수 있습니다. Winscope는 USB 또는 Wi-Fi를 통한 기기 연결을 지원하는 adb를 사용합니다.

Winscope를 실행하면 트레이스 수집 화면이 표시됩니다.

기기 연결

Winscope 프록시 또는 웹 기기 프록시를 사용하여 Winscope에서 기기를 연결할 수 있습니다. 기본적으로 Winscope 홈페이지에는 Winscope 프록시 연결 설정 UI가 표시됩니다.

트레이스 캡처를 시작하려면 다음 기기 연결 메커니즘 중 하나를 선택합니다.

Winscope 프록시 설정

Winscope 프록시를 설정하려면 다음 단계를 따르세요.

  1. 홈페이지의 트레이스 수집에서 연결 유형 선택 드롭다운에서 Winscope 프록시를 선택합니다.

    Winscope 프록시를 사용하여 트레이스 캡처

    그림 1. Winscope 프록시를 사용하여 트레이스를 캡처합니다.

  2. 다음 명령어를 실행하여 Winscope ADB Connect 프록시를 실행하고 브라우저에서 직접 트레이스를 캡처합니다.

    python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
    
  3. 실행 후 터미널에 표시된 Winscope 프록시 토큰을 확인합니다.

  4. Winscope ADB Connect 프록시를 실행하면 화면이 다음과 같이 변경됩니다. 프록시에 대한 초기 연결을 설정하려면 3단계의 Winscope 프록시 토큰을 입력하고 연결을 클릭합니다.

    Winscope 프록시에 연결

    그림 2. Winscope 프록시에 연결합니다.

웹 기기 프록시 설정

웹 기기 프록시를 설정하려면 다음 단계를 따르세요.

  1. 홈페이지의 트레이스 수집에서 연결 유형 선택 드롭다운에서 웹 기기 프록시를 선택합니다.

    웹 기기 프록시를 사용하여 트레이스 캡처

    그림 3. 웹 기기 프록시를 사용하여 트레이스를 캡처합니다.

  2. 머신에 웹 기기 프록시 데몬이 없는 경우 설치를 클릭하거나 설치 프로그램을 실행합니다.

  3. 대화상자를 통해 웹 기기 프록시에 대한 출처 액세스를 승인합니다.

    출처 WDP 액세스 승인

    그림 4. 출처를 승인합니다.

  4. 기기에 처음 연결할 때 각 새 기기의 액세스를 승인합니다. 대화상자가 자동으로 표시되지 않으면 기기 옆에 있는 lock_open 아이콘을 클릭합니다.

    wdp_unauth_device

    그림 5. 기기 승인

trace

트레이스를 수집하려면 다음 단계를 따르세요.

  1. 연결되면 캡처 프로세스를 시작하려면 타겟을 선택하고 설정을 구성합니다. 그런 다음 트레이스 시작을 클릭하여 캡처를 시작합니다.

    Winscope에서 트레이스 수집

    그림 6. Winscope에서 트레이스를 수집합니다.

  2. 캡처를 중지하려면 트레이스 종료를 클릭합니다.

    Winscope에서 트레이스 종료

    그림 7. Winscope에서 트레이스를 종료합니다.

트레이스 옵션

이 섹션에서는 각 트레이스 유형의 옵션을 설명합니다.

화면 녹화

Winscope를 사용하면 여러 디스플레이의 화면을 녹화할 수 있습니다. 메뉴에서 화면 녹화할 디스플레이를 선택합니다. 선택하지 않으면 Winscope는 기본적으로 활성 디스플레이를 기록합니다.

SurfaceFlinger

  • 버퍼 크기: SurfaceFlinger 트레이스의 인메모리 링 버퍼 크기를 조정합니다. 버퍼가 클수록 더 많은 데이터를 수집할 수 있지만 메모리 사용량이 증가합니다.

  • 입력: 노출 영역에 입력 데이터가 포함된 경우 입력 창의 세부정보를 추적합니다.

  • 구성: 구성 유형과 표시 영역을 추적합니다.

  • 메타데이터: 오프스크린 레이어를 비롯한 추가 노출 영역 메타데이터를 추적합니다.

  • HWC: 비정형 하드웨어 컴포저 메타데이터를 추가로 추적합니다.

  • 트레이스 버퍼: 노출 영역의 모든 버퍼 변경사항을 추적하도록 SurfaceFlinger를 구성합니다. 기본적으로 SurfaceFlinger는 도형이 변경될 때만 새 상태를 추적합니다.

  • 가상 디스플레이: 트레이스에 가상 디스플레이 레이어를 포함합니다.

WindowManager

  • 버퍼 크기: WindowManager 트레이스의 인메모리 링 버퍼 크기를 조정합니다. 버퍼가 클수록 더 많은 데이터를 수집할 수 있지만 메모리 사용량이 증가합니다.
  • 추적 유형: 상태 수집 빈도 옵션을 정의합니다.

    • 프레임: 이 모드에서는 WindowManager가 프레임당 단일 상태를 덤프하여 유효한 WindowManager 상태만 캡처되도록 합니다. 이 모드의 성능 오버헤드는 가장 낮습니다.
    • transaction: 이 모드는 트랜잭션이 커밋될 때마다 WindowManager 상태를 기록합니다. 프레임 내에서 여러 트랜잭션을 커밋할 수 있으므로 프레임 중에 중간 WindowManager 상태를 디버그할 수 있습니다. 그러나 이 모드는 프레임 모드에 비해 성능 오버헤드가 더 큽니다.
  • 추적 수준: WindowManager 트레이스의 상세 수준을 결정합니다.

    • 상세: 각 창의 모든 창 및 구성 정보를 포함합니다. 이 모드의 메모리 및 성능 오버헤드가 가장 높습니다.
    • debug: 모든 창에 관한 정보를 포함하지만 요청된 재정의 구성이 포함된 경우에만 창 구성을 로깅합니다.
    • critical: 디버그 모드와 동일한 정보가 포함되지만 표시되는 창만 포함됩니다. 이 모드의 메모리 및 성능 오버헤드는 가장 작습니다.

덤프

Winscope를 사용하여 상태 덤프를 실행하려면 홈페이지의 트레이스 수집에서 덤프 탭을 선택한 다음 상태 덤프를 클릭합니다.

Winscope의 덤프 상태

그림 8. Winscope에서 상태를 덤프합니다.

스크린샷 구성

Winscope를 사용하면 여러 디스플레이의 스크린샷을 찍을 수 있습니다. 메뉴에서 스크린샷을 찍을 디스플레이를 선택합니다. 아무것도 선택하지 않으면 활성 디스플레이의 스크린샷이 수집됩니다.