Winscope를 실행하거나 웹 서버에서 액세스합니다.
로컬 개발 및 디버깅을 위해 Winscope를 사용하여 트레이스를 캡처할 수 있습니다. Winscope는 adb를 사용하며, 이는 USB 또는 Wi-Fi를 통한 기기 연결을 지원합니다.
Winscope를 실행하면 트레이스 수집 화면이 표시됩니다.
기기 연결
Winscope 프록시 또는 웹 기기 프록시를 사용하여 Winscope에서 기기를 연결할 수 있습니다. 기본적으로 Winscope 홈페이지에는 Winscope 프록시 연결 설정 UI가 표시됩니다.
트레이스 캡처를 시작하려면 다음 기기 연결 메커니즘 중 하나를 선택하세요.
Winscope 프록시 설정
Winscope 프록시를 설정하려면 다음 단계를 따르세요.
홈페이지의 트레이스 수집 섹션에서 연결 유형 선택 메뉴의 Winscope 프록시 를 선택합니다.
그림 1. Winscope 프록시를 사용하여 트레이스를 캡처합니다.
다음 명령어를 실행하여 브라우저에서 직접 트레이스를 캡처할 수 있도록 Winscope ADB Connect 프록시를 실행합니다.
python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py실행 후 터미널에 표시되는 Winscope 프록시 토큰을 기록해 둡니다.
Winscope ADB Connect 프록시를 실행하면 화면이 다음과 같이 변경됩니다. 프록시에 대한 초기 연결을 설정하려면 3단계의 Winscope 프록시 토큰을 입력하고 연결 을 클릭합니다.
그림 2. Winscope 프록시에 연결합니다.
웹 기기 프록시 설정
웹 기기 프록시를 설정하려면 다음 단계를 따르세요.
홈페이지의 트레이스 수집 섹션에서 연결 유형 선택 메뉴의 웹 기기 프록시 를 선택합니다.
그림 3. 웹 기기 프록시를 사용하여 트레이스를 캡처합니다.
머신에 웹 기기 프록시 데몬이 없는 경우 설치 를 클릭하거나 설치 프로그램을 실행합니다.
대화상자를 통해 웹 기기 프록시에 대한 출처 액세스를 승인합니다.
그림 4. 출처를 승인합니다.
기기에 처음 연결할 때 각 새 기기에 대한 액세스를 승인합니다. 대화상자가 자동으로 표시되지 않으면 기기 옆에 있는
lock_open아이콘을 클릭합니다.
그림 5. 기기를 승인합니다.
트레이스
트레이스를 수집하려면 다음 단계를 따르세요.
연결되면 캡처 프로세스를 시작하기 위해 대상을 선택하고 설정을 구성합니다. 그런 다음 트레이스 시작 을 클릭하여 캡처를 시작합니다.
그림 6. Winscope에서 트레이스를 수집합니다.
캡처를 중지하려면 트레이스 종료를 클릭합니다.
그림 7. Winscope에서 트레이스를 종료합니다.
트레이스 옵션
이 섹션에서는 각 트레이스 유형의 옵션을 설명합니다.
화면 녹화
Winscope를 사용하면 여러 디스플레이의 화면을 녹화할 수 있습니다. 메뉴에서 화면 녹화할 디스플레이를 선택합니다. 선택하지 않으면 Winscope는 기본적으로 활성 디스플레이를 녹화합니다.
SurfaceFlinger
버퍼 크기: SurfaceFlinger 트레이스의 메모리 내 링 버퍼 크기를 조정합니다. 버퍼가 클수록 더 많은 데이터를 수집할 수 있지만 메모리 사용량이 증가합니다.
입력: 서페이스에 입력 데이터가 포함된 경우 입력 창의 세부정보를 추적합니다.
구성: 구성 유형과 표시 영역을 추적합니다.
메타데이터: 화면 외부 레이어를 비롯한 추가 서페이스 메타데이터를 추적합니다.
HWC: 구조화되지 않은 추가 하드웨어 컴포저 메타데이터를 추적합니다.
트레이스 버퍼: 서페이스의 모든 버퍼 변경사항을 추적하도록 SurfaceFlinger를 구성합니다. 기본적으로 SurfaceFlinger는 도형이 변경될 때만 새 상태를 추적합니다.
가상 디스플레이: 트레이스에 가상 디스플레이 레이어를 포함합니다.
WindowManager
- 버퍼 크기: WindowManager 트레이스의 메모리 내 링 버퍼 크기를 조정합니다. 버퍼가 클수록 더 많은 데이터를 수집할 수 있지만 메모리 사용량이 증가합니다.
추적 유형: 상태 수집을 위한 빈도 옵션을 정의합니다.
- 프레임: 이 모드에서 WindowManager는 프레임당 단일 상태를 덤프하여 유효한 WindowManager 상태만 캡처되도록 합니다. 이 모드는 성능 오버헤드가 가장 낮습니다.
- 트랜잭션: 이 모드는 트랜잭션이 커밋될 때마다 WindowManager 상태를 기록합니다. 프레임 내에서 여러 트랜잭션을 커밋할 수 있으므로 프레임 중에 중간 WindowManager 상태를 디버깅할 수 있습니다. 하지만 이 모드는 프레임 모드에 비해 성능 오버헤드가 더 높습니다.
추적 수준: WindowManager 트레이스의 상세도를 결정합니다.
- 상세: 각 창의 모든 창과 구성 정보를 포함합니다. 이 모드는 메모리 및 성능 오버헤드가 가장 높습니다.
- 디버그: 모든 창에 관한 정보를 포함하지만 요청된 재정의 구성이 포함된 경우에만 창 구성을 로깅합니다.
- 중요: 디버그 모드와 동일한 정보를 포함하지만 표시되는 창만 포함합니다. 이 모드는 메모리 및 성능 오버헤드가 가장 작습니다.
덤프
Winscope를 사용하여 상태 덤프를 가져오려면 홈페이지의 트레이스 수집 에서 덤프 탭을 선택한 후 상태 덤프를 클릭합니다.
그림 8. Winscope에서 상태를 덤프합니다.
스크린샷 구성
Winscope를 사용하면 여러 디스플레이의 스크린샷을 찍을 수 있습니다. 메뉴에서 스크린샷을 찍을 디스플레이를 선택합니다. 선택하지 않으면 활성 디스플레이의 스크린샷이 수집됩니다.