Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

ติดตามการเปลี่ยนหน้าต่าง

WinScope มีโครงสร้างพื้นฐานและเครื่องมือในการบันทึกและวิเคราะห์สถานะ WindowManager และ SurfaceFlinger ระหว่างและหลังการเปลี่ยนหน้าต่าง WinScope บันทึกสถานะการบริการของระบบทั้งหมดที่เกี่ยวข้องไปยังไฟล์การติดตามซึ่งคุณสามารถใช้เพื่อเล่นซ้ำและก้าวผ่านการเปลี่ยนภาพ

การจับภาพร่องรอย

จับภาพร่องรอยผ่าน การตั้งค่าด่วน หรือ adb บนอุปกรณ์ที่ใช้ userdebug หรือ eng builds

การตั้งค่าด่วน

วิธีจับภาพร่องรอยจาก การตั้งค่าด่วน :

  1. เปิดใช้งานตัวเลือกนักพัฒนา
  2. ไปที่ ตัวเลือกนักพัฒนา > ไทล์ผู้พัฒนาการตั้งค่าด่วน
  3. เปิดใช้งาน WinScope Trace
  4. เปิด การตั้งค่าด่วน
  5. แตะ Winscope Trace เพื่อเปิดใช้งานการติดตาม
  6. เรียกใช้การเปลี่ยนหน้าต่างบนอุปกรณ์
  7. หลังจากที่คุณเสร็จสิ้นการเปิดการตั้งค่าด่วนและแตะ Winscope ติดตามไปปิดการใช้งานการติดตาม

การติดตามถูกเขียนไปที่ /data/misc/wmtrace/wm_trace.pb และ /data/misc/wmtrace/layers_trace.pb การติดตามยังรวมอยู่ในรายงานข้อผิดพลาด

adb

เมื่อจับภาพร่องรอยผ่าน adb ให้จับภาพร่องรอย WindowManager และ SurfaceFlinger แยกกัน

WindowManager ติดตาม

ในการดักจับร่องรอย WindowManager:

  1. เปิดใช้งานการติดตาม
    adb shell cmd window tracing start
  2. ปิดใช้งานการติดตาม:
    adb shell cmd window tracing stop
  3. ใช้ไฟล์ติดตาม:
    adb pull /data/misc/wmtrace/wm_trace.pb wm_trace.pb

คุณสามารถเลือกที่จะเปลี่ยนการกำหนดค่าบันทึกเริ่มต้นของการตั้งค่าต่างๆสำหรับการติดตาม WindowManager:

  • ตั้งค่าความถี่การบันทึก (สำหรับธุรกรรมหรือเฟรม):
    adb shell cmd window tracing [ frame  |  transaction ]
  • กำหนดค่าระดับ verbose สำหรับรายการบันทึก:
    adb shell cmd window tracing level [ all  |  trim  |  critical ]
  • ตั้งค่าขนาดบัฟเฟอร์สูงสุด (เป็น KB):
    adb shell cmd window tracing size size-value 
  • ดัมพ์สถานะบัฟเฟอร์ระดับบันทึกความจุที่เหลือและจำนวนองค์ประกอบ:
    adb shell cmd window tracing status

ร่องรอยของ SurfaceFlinger

ในการดักจับร่องรอยของ SurfaceFlinger:

  1. เปิดใช้งานการติดตาม:
    adb shell su root service call SurfaceFlinger 1025 i32 1
  2. ปิดใช้งานการติดตาม:
    adb shell su root service call SurfaceFlinger 1025 i32 0
  3. ใช้ไฟล์ติดตาม:
    adb pull /data/misc/wmtrace/layers_trace.pb layers_trace.pb

คุณสามารถเลือกที่จะเปลี่ยนการกำหนดค่าเริ่มต้นของการตั้งค่าต่างๆสำหรับการติดตาม SurfaceFlinger:

  • ตั้งค่าขนาดบัฟเฟอร์สูงสุด (เป็น KB):
    adb shell su root service call SurfaceFlinger 1029 i32 size-value 
  • กำหนดค่าระดับ verbose สำหรับรายการบันทึก:
    adb shell su root service call SurfaceFlinger 1033 i32 flags 

สร้างทิ้งรัฐ

WinScope อ่านภาพรวมของ WindowManager และ SurfaceFlinger รัฐจากรายงานข้อผิดพลาด รายงานบั๊กจัดเก็บสถานะเป็นไฟล์โปรโตแยกต่างหากภายในโฟลเดอร์ proto เพื่อสร้างสถานะดัมพ์โดยใช้ adb ให้รันคำสั่งต่อไปนี้

WindowManager

adb exec-out dumpsys window --proto > window_dump.pb

SurfaceFlinger

adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.pb

กำลังวิเคราะห์ร่องรอย

ในการวิเคราะห์ไฟล์ติดตามให้ใช้เว็บแอป WinScope สร้างแอปได้จากแหล่งที่มาหรือเปิดจากไดเรกทอรีที่สร้างไว้ล่วงหน้า

  1. ดาวน์โหลดสิ่งประดิษฐ์ที่สร้างไว้ล่วงหน้าจากแหล่งเก็บข้อมูล Android:
    curl 'https://android.googlesource.com/platform/prebuilts/misc/+/master/common/winscope/winscope.html?format=TEXT' | base64 -d > winscope.html
  2. เปิดสิ่งประดิษฐ์ที่ดาวน์โหลดมาในเว็บเบราว์เซอร์
  3. หลังจาก WinScope เปิดขึ้นให้เลือก OPEN FILE เพื่อโหลดไฟล์ติดตาม

ใช้ WinScope

หลังจากเปิดไฟล์ติดตามใน WinScope คุณสามารถวิเคราะห์การติดตามได้หลายวิธี

ภาพหน้าจอของ WinScope
รูปที่ 1 การ วิเคราะห์การติดตามใน WinScope
  • เส้นเวลา - แสดงลำดับของเหตุการณ์ในการติดตาม ใช้ปุ่มลูกศรหรือคลิกแต่ละรายการเพื่อนำทางไปยังไทม์ไลน์
  • หน้าจอ - แสดงภาพหน้าต่างทุกหน้าต่างที่ปรากฏบนหน้าจอ คลิกหน้าต่างเพื่อเลือกหน้าต่างซอร์สในลำดับชั้น
  • ลำดับชั้น - แสดงถึงแต่ละหน้าต่างที่ระบบรู้จัก หน้าต่างบางบานไม่มีบัฟเฟอร์ แต่มีอยู่เพื่อตั้งค่านโยบายสำหรับลูก ๆ ของหน้าต่าง หน้าต่างที่มองเห็นได้จะถูกทำเครื่องหมายด้วยไอคอน V
  • คุณสมบัติ - การแสดงข้อมูลของรัฐสำหรับรายการที่เลือกในลำดับชั้น