ดูตัวอย่าง Calltack

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 จากบรรทัดคำสั่งได้