Google 致力于为黑人社区推动种族平等。查看具体举措
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

การดีบักการใช้หน่วยความจำดั้งเดิม

ที่อยู่เจลทำความสะอาด: HWASan / ASan

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

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

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

Heapprofd

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

Malloc debug

ดู Malloc Debug และNative Memory Tracking โดยใช้ libc Callbacks สำหรับคำอธิบายโดยละเอียดเกี่ยวกับตัวเลือกการดีบักที่มีให้สำหรับปัญหาหน่วยความจำเนทีฟ

libmemunreachable

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

ตะขอ 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 Debug Monitor Server

คุณยังสามารถใช้ Dalvik Debug Monitor Server (DDMS) เพื่อรับมุมมองกราฟิกของเอาต์พุต Malloc Debug

ในการใช้ DDMS ให้เปิด UI หน่วยความจำเนทีฟก่อน:

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

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