Address Sanitizer: HWASan/ASan
นักพัฒนาแพลตฟอร์ม Android ใช้ HWAddressSanitizer (HWASan) เพื่อค้นหาข้อบกพร่องของหน่วยความจำใน C/C++
คุณสามารถแฟลชอิมเมจ HWASan ที่สร้างไว้ล่วงหน้าลงในอุปกรณ์ Pixel ที่รองรับได้จาก ci.android.com (ดูวิธีการตั้งค่าโดยละเอียด)
ตั้งแต่ Android 8.0 (Oreo) เป็นต้นมา คุณยังใช้ ASan เพื่อแก้ไขข้อบกพร่องของแอปในอุปกรณ์ที่ใช้งานจริงซึ่งไม่ได้รูทได้ด้วย ดูวิธีการได้ใน ASan WikiHeapprofd
Android 10 รองรับ heapprofd ซึ่งเป็นโปรไฟล์เลอร์ฮีปแบบสุ่มตัวอย่างที่มีค่าใช้จ่ายต่ำ heapprofd ช่วยให้คุณระบุการใช้งานหน่วยความจำเนทีฟกับสแต็กการเรียกในโปรแกรมได้ ดูข้อมูลเพิ่มเติมได้ที่ heapprofd - Android Heap Profiler ใน เว็บไซต์เอกสารประกอบของ Perfetto
การแก้ไขข้อบกพร่องด้วย Malloc
ดูคำอธิบายโดยละเอียดเกี่ยวกับตัวเลือกการแก้ไขข้อบกพร่องที่ใช้ได้สำหรับปัญหาหน่วยความจำเนทีฟได้ที่การแก้ไขข้อบกพร่องด้วย Mallocและการติดตาม หน่วยความจำเนทีฟโดยใช้การเรียกกลับของ libc
libmemunreachable
libmemunreachable ของ Android เป็นเครื่องมือตรวจหาหน่วยความจำเนทีฟรั่วไหลที่มีค่าใช้จ่ายเป็นศูนย์ โดยจะใช้การผ่านการเก็บขยะแบบมาร์กและกวาดอย่างไม่แม่นยำกับหน่วยความจำเนทีฟทั้งหมด และรายงานบล็อกที่เข้าถึงไม่ได้ว่าเป็นการรั่วไหล ดูวิธีการใช้งานได้ในเอกสารประกอบของ 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
นอกจากนี้ คุณยังใช้เซิร์ฟเวอร์ตรวจสอบข้อบกพร่องของ Dalvik (DDMS) เพื่อดูเอาต์พุตการแก้ไขข้อบกพร่องด้วย Malloc ในรูปแบบกราฟิกได้ด้วย
หากต้องการใช้ DDMS ให้เปิด UI หน่วยความจำเนทีฟก่อนโดยทำดังนี้
- เปิด
~/.android/ddms.cfg - เพิ่มบรรทัด
native=true
เมื่อเปิด DDMS อีกครั้งและเลือกกระบวนการแล้ว คุณจะเปลี่ยนไปใช้แท็บการจัดสรรเนทีฟใหม่และป้อนข้อมูลลงในแท็บด้วยรายการการจัดสรรได้ ซึ่งจะมีประโยชน์อย่างยิ่งสำหรับการแก้ไขข้อบกพร่องของหน่วยความจำรั่วไหล