เนื่องจากโปรไฟล์ ProfilingManager ใช้รูปแบบ Perfetto มาตรฐานและค้นหาด้วย PerfettoSQL ได้ คุณจึงสามารถจับคู่เอเจนต์การเขียนโค้ด AI กับทักษะ Perfetto AI เพื่อวิเคราะห์สาเหตุของปัญหาโดยอัตโนมัติในพื้นที่ทำงานโดยตรง แทนที่จะไปยังไทม์ไลน์ใน Perfetto UI ด้วยตนเองหรือเขียนการค้นหาที่กำหนดเองกับไลบรารีมาตรฐาน Perfetto
- โหลดโปรไฟล์: Agent จะเปิดโปรไฟล์ที่รวบรวมไว้โดยใช้
trace_processorของ Perfetto - เรียกใช้การค้นหาเพื่อวิเคราะห์: ตัวแทนจะค้นหาโมดูลไลบรารีมาตรฐาน (เช่น
android.frames.timelineสำหรับอาการกระตุกหรือandroid.memory.heap_graph.dominator_treeสำหรับหน่วยความจำรั่วไหล) และปรับแต่งการค้นหาซ้ำๆ โดยใช้ทักษะ Perfetto AI - เชื่อมโยงกับซอร์สโค้ด: ตัวแทนจะแมปส่วนการติดตามที่กำหนดเอง สแต็กการเรียกใช้ที่สุ่มตัวอย่าง หรือชื่อคลาสที่เก็บไว้ในโปรไฟล์กับไฟล์ต้นฉบับ Kotlin หรือ Java โดยตรง และเสนอวิธีแก้ไข
ตั้งค่าทักษะ AI ของ Perfetto
ทักษะ Perfetto AI แบบโอเพนซอร์สจะสอน Agent การเขียนโค้ดเกี่ยวกับวิธีเรียกใช้ trace_processor, เขียน PerfettoSQL และทำตามเวิร์กโฟลว์ที่มีคำแนะนำสำหรับการวิเคราะห์หน่วยความจำและ CPU ของ Android การติดตั้งแต่ละครั้งจะรวม Wrapper ของ trace_processor ไว้ด้วย คุณจึงไม่จำเป็นต้องติดตั้ง trace_processor แยกต่างหาก
ติดตั้งด้วย AI: เรียกใช้พรอมต์ต่อไปนี้ใน Agent การเขียนโค้ดด้วย AI
Following instructions from https://perfetto.dev/docs/getting-started/using-ai set up the Perfetto AI skill to be usable by any agentติดตั้งด้วยตนเอง: ทำตามวิธีการตั้งค่าในการใช้ AI กับ Perfetto สำหรับ Agent ของคุณ (เช่น Claude Code, Codex, Cursor, Antigravity หรือ OpenCode)
ตัวอย่างเวิร์กโฟลว์
วางโปรไฟล์ที่บันทึกไว้อย่างน้อย 1 รายการในพื้นที่ทำงาน แล้วแจ้งให้ AI Agent ตรวจสอบ คุณสามารถวิเคราะห์โปรไฟล์เดียวเพื่อวินิจฉัยปัญหาแต่ละรายการหรือส่งหลายโปรไฟล์เพื่อเปรียบเทียบรูปแบบและการถดถอยพร้อมกันหลายรายการได้
วิเคราะห์ฮีปดัมป์ของ Java และ OOM
เมื่อคุณระบุการดัมพ์ฮีป Java ที่บันทึกโดยตรงด้วย PROFILING_TYPE_JAVA_HEAP_DUMP หรือโดยอัตโนมัติผ่านทริกเกอร์ TRIGGER_TYPE_OOM ตัวแทน AI ที่ใช้ทักษะ Perfetto AI จะช่วยคุณระบุสิ่งต่อไปนี้ได้
- หน่วยความจำรั่วไหล: ออบเจ็กต์ เช่น อินสแตนซ์
ActivityหรือFragmentที่ถูกทำลาย ซึ่งยังคงเข้าถึงได้จากรูท GC ทั้งที่ควรจะได้รับการเรียกคืน - ออบเจ็กต์ที่ซ้ำกันจำนวนมาก: คลาสที่มีจำนวนอินสแตนซ์สูงอย่างไม่คาดคิดซึ่งใช้พื้นที่ฮีปส่วนใหญ่ร่วมกัน
- การใช้หน่วยความจำที่ไม่มีประสิทธิภาพ: แคชขนาดใหญ่เกินไป โครงสร้างข้อมูลที่ซ้ำซ้อน หรือออบเจ็กต์ Dominator รายการเดียวที่เก็บรักษาหน่วยความจำในปริมาณที่ไม่สมส่วน
หากต้องการตรวจสอบดัมพ์ฮีป OutOfMemoryError และเชื่อมโยงกับซอร์สโค้ดของแอป ให้เรียกใช้พรอมต์ดังต่อไปนี้
Analyze the Perfetto OOM heap dump at </path/to/profile>, which corresponds to
the codebase located at </path/to/codebase> using the Perfetto AI skill and find
the root cause of the OutOfMemoryError.
หากต้องการดูตัวอย่างที่เสร็จสมบูรณ์ของรายงานที่พรอมต์นี้สร้างขึ้น ซึ่งรวมถึงเส้นทางการเก็บรักษา Dominator Tree, สาเหตุของปัญหาในซอร์สโค้ด และการแก้ไขที่เสนอ โปรดดูทำให้การตรวจสอบ OOM เป็นอัตโนมัติด้วย AI Agent ในกรณีศึกษา: แก้ไขข้อบกพร่องของข้อขัดข้อง OOM
วิเคราะห์การติดตามของระบบและ ANR
เมื่อคุณให้การติดตามของระบบที่บันทึกโดยตรงด้วย PROFILING_TYPE_SYSTEM_TRACE หรือโดยอัตโนมัติผ่านทริกเกอร์ TRIGGER_TYPE_ANR AI Agent ที่ใช้ทักษะ Perfetto AI จะช่วยคุณระบุสิ่งต่อไปนี้ได้
- การบล็อกการดำเนินการของเทรดหลัก: ชิ้นส่วนการติดตามที่ใช้เวลานานหรือการเรียกแบบซิงโครนัสที่ป้องกันไม่ให้เทรด UI ประมวลผลเหตุการณ์อินพุตหรือวาดเฟรมก่อนเกณฑ์ ANR
- คอขวดของสถานะเทรด: ช่วงเวลาที่เทรดหลักติดอยู่ในสถานะ
Sleeping(เช่น การบล็อก I/O ของเครือข่ายหรือการหมดเวลาของThread.sleep),Blocked(การแย่งชิงล็อก) หรือRunnable(ความล่าช้าในการจัดกำหนดการ CPU) - การเพิ่มขึ้นอย่างรวดเร็วของ CPU ในเธรดหลัก: การคำนวณที่ใช้ทรัพยากรมากหรือการวนซ้ำที่เข้มงวดซึ่งดำเนินการในเธรด UI โดยตรงแทนที่จะเป็นเธรดเบื้องหลัง
หากต้องการตรวจสอบการติดตามของระบบ ANR และเชื่อมโยงกับซอร์สโค้ดของแอป ให้เรียกใช้พรอมต์ต่อไปนี้
Analyze the Perfetto system trace at </path/to/trace.perfetto-trace>, which
corresponds to an ANR trace, and find the root cause of the ANR using the
Perfetto AI skill. The codebase is located at </path/to/codebase>.
หากต้องการดูตัวอย่างที่เสร็จสมบูรณ์ของรายงานที่พรอมต์นี้สร้างขึ้น ซึ่งรวมถึงรายละเอียดส่วนแบ่งของเทรดหลัก การสร้างช่วงเวลา thread_state ขึ้นใหม่ และการแมปซอร์สโค้ด โปรดดูทำให้การตรวจสอบ ANR เป็นอัตโนมัติด้วย AI Agent ในกรณีศึกษา: แก้ไขข้อบกพร่องของ ANR