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