หากต้องการสร้างการติดตามเมธอดของการดำเนินการของแอป คุณสามารถใช้เครื่องมือของแอปได้
โดยใช้ 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
เหล่านั้นได้โดยไปที่ ไดเรกทอรีเฉพาะแพ็กเกจคัดลอกไฟล์ไปยังเครื่องภายในของคุณโดยใช้คำสั่ง
adb pull
คำสั่งด้านล่างคัดลอกบันทึกการติดตามชื่อsample.trace
จากอุปกรณ์ไปยัง ไดเรกทอรี~/Documents/trace-logs/
ของเครื่องของคุณadb pull path-on-device/sample.trace ~/Documents/trace-logs/
จากนั้นคุณจะสามารถ นำเข้าไฟล์การติดตามพร้อมคำสั่ง เครื่องมือสร้างโปรไฟล์ CPU