แก้ไขข้อบกพร่องการใช้หน่วยความจำในเครื่อง

ตัวทำความสะอาดที่อยู่: HWASan/ASan

นักพัฒนาซอฟต์แวร์แพลตฟอร์ม Android ใช้ HWAddressSanitizer (HWASan) เพื่อค้นหาข้อบกพร่องด้านหน่วยความจําใน C/C++

คุณสามารถแฟลชภาพ HWASan ที่คอมไพล์ไว้ล่วงหน้าลงในอุปกรณ์ Pixel ที่รองรับได้จาก ci.android.com (วิธีการตั้งค่าโดยละเอียด)

ตั้งแต่ Android 8.0 (Oreo) คุณสามารถใช้ ASan เพื่อแก้ไขข้อบกพร่องของแอปในเวอร์ชันที่ใช้งานจริงแบบไม่รูทได้ด้วย อุปกรณ์ ดูวิธีการได้ในวิกิของ ASan

ฮีปโพรด

Android 10 รองรับ Heapprofd ซึ่งเป็นเครื่องมือสร้างโปรไฟล์ฮีปการสุ่มตัวอย่างแบบโอเวอร์เฮดต่ำ Heapprofd ช่วยให้คุณระบุแหล่งที่มาของการใช้งานหน่วยความจำในเครื่องกับ Calltack ในโปรแกรมได้ โปรดดู Heapprofd - Android Heap Profiler ใน เว็บไซต์เอกสารประกอบของ Perfetto เพื่อดูข้อมูลเพิ่มเติม

การแก้ไขข้อบกพร่อง Malloc

ดู Malloc แก้ไขข้อบกพร่องและเนทีฟ การติดตามหน่วยความจำโดยใช้ libc Callback สำหรับคำอธิบายอย่างละเอียดเกี่ยวกับ ตัวเลือกการแก้ไขข้อบกพร่องที่ใช้ได้กับปัญหาเกี่ยวกับหน่วยความจำของระบบ

ไม่สามารถเข้าถึงได้

Libmunreachable ของ Android คือเครื่องมือตรวจจับการรั่วไหลของหน่วยความจำในเครื่องแบบ Zero-over-head โดยใช้เครื่องมือรวบรวมขยะแบบทำเครื่องหมายและกวาดที่ไม่แม่นยำผ่านหน่วยความจำในเครื่องทั้งหมด รายงานการบล็อกที่เข้าถึงไม่ได้ว่าเป็นการรั่วไหล ดูวิธีการใช้งานได้ที่หัวข้อเอกสารประกอบของ libmemunreachable

ตะขอของ Malloc

หากต้องการสร้างเครื่องมือของคุณเอง libc ของ Android ยังรองรับการสกัดกั้นทั้งหมด การจัดสรร/การโทรที่ไม่เสียค่าใช้จ่ายที่เกิดขึ้นระหว่างการดำเนินการโปรแกรม โปรดดู malloc_hooks เอกสาร สำหรับวิธีการใช้งาน

สถิติ Malloc

Android รองรับส่วนขยาย mallinfo(3) และ malloc_info(3) ใน <malloc.h> ฟังก์ชัน malloc_info พร้อมใช้งานใน Android 6.0 (Marshmallow) ขึ้นไป และมีการบันทึกสคีมา XML ไว้ใน <malloc.h> ของ Bionic

เซิร์ฟเวอร์เครื่องมือตรวจสอบข้อบกพร่องของ Dalvik

คุณยังสามารถใช้การแก้ไขข้อบกพร่อง Daalvik ตรวจสอบเซิร์ฟเวอร์ (DDMS) เพื่อรับมุมมองกราฟิกของการแก้ไขข้อบกพร่อง Malloc เอาต์พุต

หากต้องการใช้ DDMS ให้เปิด UI หน่วยความจําของระบบก่อนโดยทำดังนี้

  1. เปิด ~/.android/ddms.cfg
  2. เพิ่มบรรทัด: native=true

เมื่อเปิด DDMS อีกครั้งและเลือกกระบวนการแล้ว คุณสามารถเปลี่ยนไปใช้แท็บการจัดสรรใหม่และป้อนข้อมูลรายการการจัดสรร นี่คือ มีประโยชน์อย่างยิ่งในการแก้ไขข้อบกพร่อง หน่วยความจำรั่วไหล