Callstack มีประโยชน์ในการระบุจุดที่ CPU ทำงานหนัก หรือส่วนของโค้ดที่ ใช้เวลานานในการดำเนินการ Callstack ช่วยให้คุณเข้าใจว่าส่วนใดของ โค้ดที่ได้รับการดำเนินการ และเหตุใดจึงมีการเรียกใช้
ภาพรวมตัวอย่างสแต็กการเรียกใช้
หากต้องการสุ่มตัวอย่าง Callstack ให้ เลือกงานค้นหาฮอตสปอตของ CPU (ตัวอย่าง Callstack) จากแท็บหน้าแรกของ Android Studio Profiler หลังจากแยกวิเคราะห์การบันทึกแล้ว คุณจะเห็นภาพต่อไปนี้
ส่วนเธรดจะแสดงเฟรมสำหรับการเรียกทุกครั้งที่แอปและระบบทำ เพื่อเสริมไทม์ไลน์การใช้งาน CPU และการโต้ตอบ เคล็ดลับบางส่วนในการไปยังส่วนต่างๆ ของตัวอย่าง Callstack มีดังนี้
- ขยายเธรดที่สนใจและใช้แป้นพิมพ์ลัด เพื่อไปยังเฟรมสแต็ก คลิกเฟรมสแต็กเพื่อดูรายละเอียดเกี่ยวกับ เหตุการณ์และการเรียกที่เกี่ยวข้องในบานหน้าต่างการวิเคราะห์
- หากต้องการกรองเฟรมสแต็กบางประเภท ให้คลิกยุบเฟรม แล้ว
เลือกประเภทเฟรมที่ต้องการซ่อน การยุบเฟรมจะเป็นการนำเฟรมออกจากทั้งส่วนเธรดและการวิเคราะห์ คุณอาจต้องการยุบเฟรมจากเครื่องเสมือน Java (เช่น
android::AndroidRuntime::start
และart::{...}
) และเคอร์เนลของระบบ (เช่น[kernel.kallsyms]+{offset}
) ทั้งนี้ขึ้นอยู่กับการตรวจสอบของคุณ โดยปกติแล้ว การดำเนินการนี้จะสอดคล้องกับการยุบเฟรมที่เกี่ยวข้องกับ[kernel.kallsyms]
,/apex/
และ/system/*
เนื่องจากโดยปกติแล้วโปรแกรม Java/Kotlin จะดำเนินการผ่านเครื่องเสมือน Java เมื่อ Android Studio รวบรวม Call Stack สำหรับโปรแกรม Java/Kotlin โดยปกติแล้ว Call Stack จะไม่รวมเฉพาะโค้ด Java/Kotlin แต่ยังรวมถึงโค้ดแบบเนทีฟ ที่จำเป็นในการเรียกใช้โปรแกรมเองและเพื่อให้โปรแกรมสื่อสารกับระบบและฮาร์ดแวร์ได้ด้วย
- หากต้องการข้ามไปยังซอร์สโค้ดที่เชื่อมโยงกับเฟรมสแต็ก ให้คลิกขวาที่เฟรมแล้วคลิกข้ามไปยังแหล่งที่มา
- หากต้องการไฮไลต์เฟรมสแต็กที่เชื่อมโยงกับเหตุการณ์ในตารางเหตุการณ์ ให้คลิกเหตุการณ์
ดูข้อมูลเกี่ยวกับภาพอื่นๆ ได้ที่บันทึกการติดตามระบบและคำศัพท์ของแผนภูมิ
ตัวอย่างโค้ดเนทีฟโดยใช้บรรทัดคำสั่ง
ภายใน Android Studio จะใช้ simpleperf เพื่อติดตาม โค้ดเนทีฟของแอป หากต้องการระบุตัวเลือกเพิ่มเติมสำหรับ Simpleperf เช่น การสุ่มตัวอย่าง CPU ของอุปกรณ์ที่เฉพาะเจาะจงหรือการระบุระยะเวลาการสุ่มตัวอย่าง ที่มีความแม่นยำสูง คุณสามารถใช้ simpleperf จากบรรทัดคำสั่งได้