Yerel bellek kullanımında hata ayıklama

Address Sanitizer: HWASan/ASan

Android platform geliştiricileri, C/C++'daki bellek hatalarını bulmak için HWAddressSanitizer'ı (HWASan) kullanır.

ci.android.com adresinden desteklenen Pixel cihazlara önceden oluşturulmuş HWASan görüntülerini yükleyebilirsiniz (ayrıntılı kurulum talimatları).

Android 8.0 (Oreo) sürümünden itibaren, root erişimi olmayan üretim cihazlarındaki uygulamalarda hata ayıklamak için ASan'ı da kullanabilirsiniz. Talimatları ASan wiki sayfasında bulabilirsiniz.

Heapprofd

Android 10, düşük ek yüke sahip bir örnekleme yığını profil oluşturucu olan heapprofd'u destekler. heapprofd, yerel bellek kullanımını programınızdaki çağrı yığınlarına atamanıza olanak tanır. Daha fazla bilgi için Perfetto dokümanları sitesindeki heapprofd - Android Heap Profiler başlıklı makaleyi inceleyin.

Malloc hata ayıklama

Yerel bellek sorunları için kullanılabilen hata ayıklama seçeneklerinin ayrıntılı açıklaması için Malloc Debug ve libc Geri Çağırmalarını Kullanarak Yerel Bellek İzleme başlıklı makaleleri inceleyin.

libmemunreachable

Android'in libmemunreachable'ı, sıfır ek yükle yerel bellek sızıntısı algılayıcısıdır. Tüm yerel bellekte kesin olmayan bir işaretleme ve temizleme çöp toplayıcı geçişi kullanır ve ulaşılamayan tüm blokları sızıntı olarak bildirir. Kullanım talimatları için libmemunreachable belgelerine bakın.

Malloc kancaları

Kendi araçlarınızı oluşturmak istiyorsanız Android'in libc'si, program yürütme sırasında gerçekleşen tüm ayırma/boşaltma çağrılarını yakalamayı da destekler. Kullanım talimatları için malloc_hooks belgelerine bakın.

Malloc istatistikleri

Android, <malloc.h> için mallinfo(3) ve malloc_info(3) uzantılarını destekler. malloc_info işlevi Android 6.0 (Marshmallow) ve sonraki sürümlerde kullanılabilir. XML şeması, Bionic'in <malloc.h> bölümünde belgelenmiştir.

Dalvik Debug Monitor Server

Malloc Debug çıkışının grafik görünümünü elde etmek için Dalvik Debug Monitor Server (DDMS)'ı da kullanabilirsiniz.

DDMS'yi kullanmak için önce yerel bellek kullanıcı arayüzünü etkinleştirin:

  1. ~/.android/ddms.cfg uygulamasını aç
  2. Çizgiyi ekleyin: native=true

DDMS'yi yeniden başlattıktan ve bir işlem seçtikten sonra yeni yerel ayırma sekmesine geçip bu sekmeyi bir ayırma listesiyle doldurabilirsiniz. Bu, özellikle bellek sızıntılarında hata ayıklamak için yararlıdır.