สร้างบันทึกการติดตามด้วยเครื่องมือสำหรับแอป

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

นอกจากนี้คุณยัง เริ่มและหยุดการติดตามในเครื่องมือสร้างโปรไฟล์ CPU โดยไม่ต้องติดตั้งเครื่องมือในโค้ดของแอป

ก่อนที่คุณจะเริ่มสร้างบันทึกการติดตาม โปรดตรวจสอบว่าแอปได้เพิ่มตรรกะลงใน เก็บบันทึกการติดตามไปยังแอปเฉพาะ

เครื่องดนตรีในแอป

หากต้องการสร้างบันทึกการติดตาม โปรดโทรติดต่อ startMethodTracing() ในตำแหน่งที่คุณต้องการให้ระบบเริ่มบันทึกข้อมูลการติดตาม

ในการโทร คุณสามารถระบุชื่อสำหรับ .trace และระบบจะบันทึกไฟล์ดังกล่าวเป็นแพ็กเกจเฉพาะ สำหรับเก็บข้อมูลแอปถาวรในอุปกรณ์เป้าหมาย ไดเรกทอรีเดียวกับที่แสดงผลโดย วันที่ getExternalFilesDir() และอยู่ในไดเรกทอรี ~/sdcard/ ในอุปกรณ์ส่วนใหญ่ ไฟล์นี้มีข้อมูลการติดตามเมธอดแบบไบนารีและตารางการแมปที่มีเธรด และชื่อเมธอด หากต้องการหยุดการติดตาม ให้โทร stopMethodTracing()

ตัวอย่างต่อไปนี้จะเริ่มต้นและหยุดเก็บบันทึกการติดตามโดยใช้ชื่อ sample.trace:

Kotlin

// Starts recording a trace log with the name you provide. For example, the
// following code tells the system to start recording a .trace file to the
// device with the name "sample.trace".
Debug.startMethodTracing("sample")

// The system begins buffering the generated trace data, until your
// application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes
// the buffered data to the output file.
Debug.stopMethodTracing()

Java

// Starts recording a trace log with the name you provide. For example, the
// following code tells the system to start recording a .trace file to the
// device with the name "sample.trace".
Debug.startMethodTracing("sample");
...
// The system begins buffering the generated trace data, until your
// application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes
// the buffered data to the output file.
Debug.stopMethodTracing();

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

หากระบบถึงขนาดบัฟเฟอร์สูงสุดก่อนการเรียกใช้ stopMethodTracing(), ระบบจะหยุดติดตามและส่งการแจ้งเตือนไปยังคอนโซล วิธีที่เริ่มและหยุดการติดตามใช้ได้กับทั้งกระบวนการของแอป นั่น คุณสามารถโทรหา startMethodTracing() ใน วันที่ onCreate(Bundle) และเรียกใช้ stopMethodTracing() ใน onDestroy() ของกิจกรรมนั้น

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

เมื่อทำให้ใช้งานได้กับอุปกรณ์ที่ใช้ Android 5.0 (API ระดับ 21) ขึ้นไป คุณจะทำสิ่งต่อไปนี้ได้ ใช้การสร้างโปรไฟล์ตามตัวอย่างในโปรไฟล์โดยมีผลกระทบต่อประสิทธิภาพรันไทม์น้อยกว่า ถึง เปิดใช้งานการทำโปรไฟล์ตัวอย่าง, โทร startMethodTracingSampling() (แทนที่จะเรียกใช้ startMethodTracing()) ด้วยการสุ่มตัวอย่างที่ระบุ ช่วงเวลา ระบบจะรวบรวมตัวอย่างเป็นระยะๆ จนกว่าแอปจะเรียกใช้ stopMethodTracing()

บันทึกหลายบันทึก

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

Kotlin

// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with
// the current date and time.
val dateFormat: DateFormat = SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault())
val logDate: String = dateFormat.format(Date())
// Applies the date and time to the name of the trace log.
Debug.startMethodTracing("sample-$logDate")

Java

// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with
// the current date and time.
SimpleDateFormat dateFormat =
        new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault());
String logDate = dateFormat.format(new Date());
// Applies the date and time to the name of the trace log.
Debug.startMethodTracing(
        "sample-" + logDate);

เข้าถึงบันทึกการติดตามในอุปกรณ์

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

  • ใช้เครื่องมือสำรวจอุปกรณ์ หากต้องการเปิดโปรแกรมสำรวจอุปกรณ์ ให้คลิก มุมมอง > หน้าต่างเครื่องมือ > โปรแกรมสำรวจอุปกรณ์ (หรือคลิก โปรแกรมสำรวจอุปกรณ์ ปุ่ม ในแถบหน้าต่างเครื่องมือ) ดังที่แสดงในรูปที่ 1 คุณจะค้นหาไฟล์ .trace เหล่านั้นได้โดยไปที่ ไดเรกทอรีเฉพาะแพ็กเกจ

    รูปที่ 1 กำลังค้นหาบันทึกการติดตามโดยใช้ Device Explorer

  • คัดลอกไฟล์ไปยังเครื่องภายในของคุณโดยใช้คำสั่ง adb pull คำสั่งด้านล่างคัดลอกบันทึกการติดตามชื่อ sample.trace จากอุปกรณ์ไปยัง ไดเรกทอรี ~/Documents/trace-logs/ ของเครื่องของคุณ

    adb pull path-on-device/sample.trace ~/Documents/trace-logs/

จากนั้นคุณจะสามารถ นำเข้าไฟล์การติดตามพร้อมคำสั่ง เครื่องมือสร้างโปรไฟล์ CPU