Winscope로 트레이스 캡처

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

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

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. 기기를 승인합니다.

트레이스

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

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

    Winscope에서 트레이스 수집

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

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

    Winscope에서 추적 종료

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

트레이스 옵션

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

화면 녹화

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

SurfaceFlinger

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

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

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

  • 메타데이터: 화면 외부 레이어를 비롯한 추가 서페이스 메타데이터를 추적합니다.

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

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

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

WindowManager

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

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

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

덤프

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

Winscope에서 상태 덤프

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

스크린샷 구성

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