Traceview เลิกใช้งานแล้ว หากใช้ Android
Studio 3.2 ขึ้นไป คุณควรใช้
โปรไฟล์เลอร์ CPU แทนเพื่อตรวจสอบไฟล์
.trace
ที่บันทึกโดย
การวัดประสิทธิภาพแอป
ด้วยคลาส Debug
บันทึกการติดตามเมธอดใหม่ บันทึกไฟล์ .trace
และตรวจสอบ
การใช้งาน CPU แบบเรียลไทม์ของกระบวนการในแอป
Traceview เป็นเครื่องมือที่แสดงภาพกราฟิกของ
บันทึกการติดตาม คุณสร้างบันทึกได้โดยใช้โค้ดเป็นเครื่องมือด้วยคลาส
Debug
วิธีการติดตามนี้มีความแม่นยำมากเนื่องจากคุณสามารถระบุตำแหน่งที่แน่นอนในโค้ดที่ต้องการเริ่มและหยุดบันทึกข้อมูลการติดตามได้ หากยังไม่ได้สร้างบันทึกการติดตามเหล่านี้และ
บันทึกจากอุปกรณ์ที่เชื่อมต่อไว้ไปยังเครื่องในพื้นที่ ให้ไปที่สร้าง
บันทึกการติดตามด้วยการใช้แอปเป็นเครื่องมือ
การตรวจสอบบันทึกเหล่านี้โดยใช้ Traceview จะช่วยให้คุณแก้ไขข้อบกพร่องของแอปและ
สร้างโปรไฟล์ประสิทธิภาพของแอปได้
เคล็ดลับ: คุณสามารถใช้
dmtracedump
จากบรรทัดคำสั่งเพื่อสร้างแผนภาพ
สแต็กการเรียกแบบกราฟิกของไฟล์บันทึกการติดตามได้
หากไม่จำเป็นต้องดูบันทึกการติดตามที่คุณบันทึกไว้โดยการวัดประสิทธิภาพ
แอปด้วยคลาส Debug
คุณสามารถใช้โปรไฟล์เลอร์ CPU
ที่รวมอยู่ใน Android Studio 3.0 ขึ้นไปเพื่อตรวจสอบเธรดของแอปและบันทึก
การติดตามเมธอด
เปิดบันทึกการติดตามโดยใช้ Traceview
หากต้องการเปิดบันทึกการติดตามด้วย Traceview จาก Android Studio ให้ทำดังนี้
- เริ่ม Android Device Monitor
- ใน Android Device Monitor ให้เลือกไฟล์ > เปิดไฟล์
- ไปที่ไฟล์
.trace
ที่ต้องการตรวจสอบ - คลิกเปิด
หมายเหตุ: หากคุณพยายามดูบันทึกการติดตาม
ของแอปที่สร้างขึ้นโดยเปิดใช้การลดขนาดโค้ด (เช่น บิลด์รีลีส)
ชื่อเมธอดและชื่อสมาชิกบางรายการอาจได้รับการปกปิด คุณสามารถใช้ไฟล์ ProGuard
mapping.txt
เพื่อดูชื่อเดิมที่ไม่ได้ทำการปกปิดได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์นี้ได้ที่
ถอดรหัสสแต็กเทรซที่ปรับให้ยากต่อการอ่าน (Obfuscate)
หมายเหตุ: ระบบเลิกใช้งานการเรียกใช้ traceview
จากบรรทัดคำสั่งแล้ว
ภาพรวมของ Traceview
หลังจากเปิดบันทึกการติดตามแล้ว Traceview จะแสดงข้อมูลบันทึกโดยใช้ 2 บานหน้าต่างต่อไปนี้
- แผงไทม์ไลน์ที่อธิบายเวลาที่แต่ละ เธรดเข้าและออกจากเมธอด
- แผงโปรไฟล์ที่สรุปการดำเนินการ ของแต่ละเธรดในช่วงระยะเวลาของบันทึกการติดตาม
ส่วนด้านล่างนี้มีข้อมูลเพิ่มเติมเกี่ยวกับบานหน้าต่างเอาต์พุตของ Traceview
แผงไทม์ไลน์
รูปที่ 1 แสดงภาพระยะใกล้ของบานหน้าต่างไทม์ไลน์ การดำเนินการของแต่ละเธรดจะ แสดงในแถวของตัวเอง โดยเวลาที่ผ่านไปจะเพิ่มขึ้นไปทางขวา แต่ละวิธีจะแสดงด้วยสีที่แตกต่างกัน เส้นบางๆ ใต้แถวแรกแสดงองค์ประกอบย่อย (ตั้งแต่รายการแรกจนถึงรายการสุดท้าย) ของเมธอดที่เลือก
รูปที่ 1 แผงไทม์ไลน์ Traceview
แผงโปรไฟล์
ดังที่แสดงในรูปที่ 2 บานหน้าต่างโปรไฟล์จะแสดงรายการแต่ละวิธีที่ระบบ ดำเนินการในช่วงระยะเวลาของบันทึกการติดตามและเวลาที่ใช้ในการดำเนินการวิธีเหล่านั้น เมธอดที่เรียกเมธอดอื่นจะเรียกว่าเมธอดหลัก และ เมธอดที่เมธอดหลักเรียกจะเรียกว่าเมธอดย่อย เมื่อคุณ เลือกเมธอดโดยคลิกที่เมธอดนั้น ระบบจะแสดงทั้งเมธอดหลักและเมธอดย่อย ภายใต้ 2 โหนดแยกกัน
สำหรับแต่ละเมธอด (โหนดระดับบนสุด) ตารางจะแสดงทั้งเวลาแบบรวมและ เวลาแบบไม่รวม (เป็นมิลลิวินาที) รวมถึงเปอร์เซ็นต์ของเวลารวม เวลาเฉพาะคือเวลาที่ใช้ในการเรียกใช้โค้ดของเมธอดเอง ส่วนเวลารวมคือเวลาที่ใช้ในการเรียกใช้โค้ดของเมธอดเองรวมกับเวลาที่ใช้ในการเรียกใช้โค้ดของเมธอดลูก นอกจากนี้ ระบบยังรายงานข้อมูลระยะเวลาในแง่ของ เวลา CPU และเวลาจริงด้วย เวลา CPU จะพิจารณาเฉพาะเวลาที่เธรดใช้เวลา CPU อย่าง จริงจัง และเวลาจริงจะให้ข้อมูลเวลาที่แน่นอน ตั้งแต่ตอนที่แอปเข้าสู่เมธอดจนถึงตอนที่ออกจากเมธอดนั้น ไม่ว่า เธรดจะทำงานอยู่หรืออยู่ในโหมดสลีปก็ตาม
สำหรับแต่ละโหนดระดับบนสุดในแผงโปรไฟล์ คอลัมน์การเรียก + การเรียกซ้ำ การเรียก/ทั้งหมด ในตาราง (ไม่ได้แสดงในรูปที่ 2) จะรายงานจำนวนการเรียกเมธอด และจำนวนการเรียกซ้ำ หรือสำหรับเมธอดหลักและเมธอดย่อย คอลัมน์นี้จะแสดงจำนวนการเรียกที่เมธอดเป็นเมธอดย่อยหรือเมธอดหลักของเมธอดในโหนดระดับบนสุด
รูปที่ 2 แผงโปรไฟล์ Traceview
ปัญหาที่ทราบของ Traceview
การบันทึก Traceview ไม่จัดการเธรดได้ดี จึงทำให้เกิดปัญหาต่อไปนี้
- หากเทรดออกในระหว่างการสร้างโปรไฟล์ ระบบจะไม่ปล่อยชื่อเทรด (แก้ไขแล้วใน Android 5.1 ขึ้นไป)
- VM จะใช้รหัสเธรดซ้ำ หากเธรดหยุดทำงานและอีกเธรดหนึ่งเริ่มทำงาน เธรดทั้ง 2 อาจมีรหัสเดียวกัน