ตรวจสอบบันทึกการติดตามด้วย Traceview

Traceview เลิกใช้งานแล้ว หากใช้ Android Studio 3.2 ขึ้นไป คุณควรใช้ โปรไฟล์เลอร์ CPU แทนเพื่อตรวจสอบไฟล์ .trace ที่บันทึกโดย การวัดประสิทธิภาพแอป ด้วยคลาส Debug บันทึกการติดตามเมธอดใหม่ บันทึกไฟล์ .trace และตรวจสอบ การใช้งาน CPU แบบเรียลไทม์ของกระบวนการในแอป

Traceview เป็นเครื่องมือที่แสดงภาพกราฟิกของ บันทึกการติดตาม คุณสร้างบันทึกได้โดยใช้โค้ดเป็นเครื่องมือด้วยคลาส Debug วิธีการติดตามนี้มีความแม่นยำมากเนื่องจากคุณสามารถระบุตำแหน่งที่แน่นอนในโค้ดที่ต้องการเริ่มและหยุดบันทึกข้อมูลการติดตามได้ หากยังไม่ได้สร้างบันทึกการติดตามเหล่านี้และ บันทึกจากอุปกรณ์ที่เชื่อมต่อไว้ไปยังเครื่องในพื้นที่ ให้ไปที่สร้าง บันทึกการติดตามด้วยการใช้แอปเป็นเครื่องมือ การตรวจสอบบันทึกเหล่านี้โดยใช้ Traceview จะช่วยให้คุณแก้ไขข้อบกพร่องของแอปและ สร้างโปรไฟล์ประสิทธิภาพของแอปได้

เคล็ดลับ: คุณสามารถใช้ dmtracedump จากบรรทัดคำสั่งเพื่อสร้างแผนภาพ สแต็กการเรียกแบบกราฟิกของไฟล์บันทึกการติดตามได้

หากไม่จำเป็นต้องดูบันทึกการติดตามที่คุณบันทึกไว้โดยการวัดประสิทธิภาพ แอปด้วยคลาส Debug คุณสามารถใช้โปรไฟล์เลอร์ CPU ที่รวมอยู่ใน Android Studio 3.0 ขึ้นไปเพื่อตรวจสอบเธรดของแอปและบันทึก การติดตามเมธอด

เปิดบันทึกการติดตามโดยใช้ Traceview

หากต้องการเปิดบันทึกการติดตามด้วย Traceview จาก Android Studio ให้ทำดังนี้

  1. เริ่ม Android Device Monitor
  2. ใน Android Device Monitor ให้เลือกไฟล์ > เปิดไฟล์
  3. ไปที่ไฟล์ .trace ที่ต้องการตรวจสอบ
  4. คลิกเปิด

หมายเหตุ: หากคุณพยายามดูบันทึกการติดตาม ของแอปที่สร้างขึ้นโดยเปิดใช้การลดขนาดโค้ด (เช่น บิลด์รีลีส) ชื่อเมธอดและชื่อสมาชิกบางรายการอาจได้รับการปกปิด คุณสามารถใช้ไฟล์ ProGuard mapping.txt เพื่อดูชื่อเดิมที่ไม่ได้ทำการปกปิดได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์นี้ได้ที่ ถอดรหัสสแต็กเทรซที่ปรับให้ยากต่อการอ่าน (Obfuscate)

หมายเหตุ: ระบบเลิกใช้งานการเรียกใช้ traceview จากบรรทัดคำสั่งแล้ว

ภาพรวมของ Traceview

หลังจากเปิดบันทึกการติดตามแล้ว Traceview จะแสดงข้อมูลบันทึกโดยใช้ 2 บานหน้าต่างต่อไปนี้

  • แผงไทม์ไลน์ที่อธิบายเวลาที่แต่ละ เธรดเข้าและออกจากเมธอด
  • แผงโปรไฟล์ที่สรุปการดำเนินการ ของแต่ละเธรดในช่วงระยะเวลาของบันทึกการติดตาม

ส่วนด้านล่างนี้มีข้อมูลเพิ่มเติมเกี่ยวกับบานหน้าต่างเอาต์พุตของ Traceview

แผงไทม์ไลน์

รูปที่ 1 แสดงภาพระยะใกล้ของบานหน้าต่างไทม์ไลน์ การดำเนินการของแต่ละเธรดจะ แสดงในแถวของตัวเอง โดยเวลาที่ผ่านไปจะเพิ่มขึ้นไปทางขวา แต่ละวิธีจะแสดงด้วยสีที่แตกต่างกัน เส้นบางๆ ใต้แถวแรกแสดงองค์ประกอบย่อย (ตั้งแต่รายการแรกจนถึงรายการสุดท้าย) ของเมธอดที่เลือก

แผงไทม์ไลน์ของ Traceview

รูปที่ 1 แผงไทม์ไลน์ Traceview

แผงโปรไฟล์

ดังที่แสดงในรูปที่ 2 บานหน้าต่างโปรไฟล์จะแสดงรายการแต่ละวิธีที่ระบบ ดำเนินการในช่วงระยะเวลาของบันทึกการติดตามและเวลาที่ใช้ในการดำเนินการวิธีเหล่านั้น เมธอดที่เรียกเมธอดอื่นจะเรียกว่าเมธอดหลัก และ เมธอดที่เมธอดหลักเรียกจะเรียกว่าเมธอดย่อย เมื่อคุณ เลือกเมธอดโดยคลิกที่เมธอดนั้น ระบบจะแสดงทั้งเมธอดหลักและเมธอดย่อย ภายใต้ 2 โหนดแยกกัน

สำหรับแต่ละเมธอด (โหนดระดับบนสุด) ตารางจะแสดงทั้งเวลาแบบรวมและ เวลาแบบไม่รวม (เป็นมิลลิวินาที) รวมถึงเปอร์เซ็นต์ของเวลารวม เวลาเฉพาะคือเวลาที่ใช้ในการเรียกใช้โค้ดของเมธอดเอง ส่วนเวลารวมคือเวลาที่ใช้ในการเรียกใช้โค้ดของเมธอดเองรวมกับเวลาที่ใช้ในการเรียกใช้โค้ดของเมธอดลูก นอกจากนี้ ระบบยังรายงานข้อมูลระยะเวลาในแง่ของ เวลา CPU และเวลาจริงด้วย เวลา CPU จะพิจารณาเฉพาะเวลาที่เธรดใช้เวลา CPU อย่าง จริงจัง และเวลาจริงจะให้ข้อมูลเวลาที่แน่นอน ตั้งแต่ตอนที่แอปเข้าสู่เมธอดจนถึงตอนที่ออกจากเมธอดนั้น ไม่ว่า เธรดจะทำงานอยู่หรืออยู่ในโหมดสลีปก็ตาม

สำหรับแต่ละโหนดระดับบนสุดในแผงโปรไฟล์ คอลัมน์การเรียก + การเรียกซ้ำ การเรียก/ทั้งหมด ในตาราง (ไม่ได้แสดงในรูปที่ 2) จะรายงานจำนวนการเรียกเมธอด และจำนวนการเรียกซ้ำ หรือสำหรับเมธอดหลักและเมธอดย่อย คอลัมน์นี้จะแสดงจำนวนการเรียกที่เมธอดเป็นเมธอดย่อยหรือเมธอดหลักของเมธอดในโหนดระดับบนสุด

แผงโปรไฟล์ Traceview

รูปที่ 2 แผงโปรไฟล์ Traceview

ปัญหาที่ทราบของ Traceview

การบันทึก Traceview ไม่จัดการเธรดได้ดี จึงทำให้เกิดปัญหาต่อไปนี้

  • หากเทรดออกในระหว่างการสร้างโปรไฟล์ ระบบจะไม่ปล่อยชื่อเทรด (แก้ไขแล้วใน Android 5.1 ขึ้นไป)
  • VM จะใช้รหัสเธรดซ้ำ หากเธรดหยุดทำงานและอีกเธรดหนึ่งเริ่มทำงาน เธรดทั้ง 2 อาจมีรหัสเดียวกัน