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. 대화상자를 통해 Web Device Proxy에 대한 출처 액세스를 승인합니다.

    출처 WDP 액세스 승인

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

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

    wdp_unauth_device

    그림 5. 기기 승인

트레이스

다음 단계에 따라 트레이스를 수집하세요.

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

    Winscope에서 트레이스 수집

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

  2. 캡처를 중지하려면 추적 종료를 클릭합니다.

    Winscope에서 추적 종료

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

추적 옵션

이 섹션에서는 각 추적 유형의 옵션을 설명합니다.

화면 녹화

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

SurfaceFlinger

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

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

  • 컴포지션: 컴포지션 유형과 표시 영역을 추적합니다.

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

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

  • 트레이스 버퍼: Surface에서 모든 버퍼 변경사항을 추적하도록 SurfaceFlinger를 구성합니다. 기본적으로 SurfaceFlinger는 도형이 변경된 경우에만 새 상태를 추적합니다.

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

WindowManager

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

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

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

덤프

Winscope를 사용하여 상태 덤프를 가져오려면 홈페이지의 Collect Traces에서 Dump 탭을 선택한 다음 Dump state를 클릭합니다.

Winscope에서 상태 덤프

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

스크린샷 구성

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