Yerel bellek kullanımında hata ayıklama

Adres Düzenleyici: HWASan/ASan

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

Önceden oluşturulmuş HWASan resimlerini desteklenen Pixel cihazlara ci.android.com (ayrıntılı kurulum talimatları).

Android 8.0 (Oreo) sürümünden itibaren, köklendirilmemiş üretim cihazlarındaki uygulamalarda hata ayıklama için ASan'ı kullanmak da mümkündür. Talimatları ASan wiki'sinde bulabilirsiniz.

Heapprofd

Android 10, genel giderleri düşük, örnekleme yığın profili oluşturucu olan heapprofd'u destekler. heapprofd, yerel bellek kullanımını programınızdaki çağrı yığınlarıyla ilişkilendirmenize olanak tanır. Daha fazla bilgi için Perfetto doküman sitesinde heapprofd - Android Heap Profiler başlıklı makaleyi inceleyin.

Malloc hata ayıklaması

Bkz. Malloc Hata ayıkla ve Yerel libc Geri Çağırmaları ile Bellek İzleme hakkında yerel bellek sorunları için kullanılabilen hata ayıklama seçenekleri.

libmemunreachable

Android'in libmemunreachable özelliği sıfır ek yüke sahip yerel bellek sızıntısı dedektörüdür. Tüm yerel bellek üzerinde, erişilemeyen blokları sızıntı olarak bildiren, hatalı bir işaretleme ve süpürme çöp toplayıcı geçişi kullanır. Bkz. libmemunreachable dokümanlarına bakın.

Malloc kancaları

Kendi araçlarınızı geliştirmek istiyorsanız Android'in libc'si tüm araçlarda Program yürütülürken gerçekleşen tahsis/ücretsiz çağrıların sayısı. Bkz. malloc_hook'lar dokümanlarına 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 açıklanmıştır.

Dalvik Hata Ayıklama İzleme Sunucusu

Daha fazla bilgi için Dalvik Debug Malloc Hata Ayıklama'nın grafik görünümünü elde etmek için Sunucuyu İzle (DDMS) çıktı.

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

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

DCM'yi yeniden başlattıktan ve bir işlem seçtikten sonra, yerel ayırma sekmesini seçin ve ayırmalar listesiyle doldurun. Bu, özellikle bellek sızıntılarını hata ayıklamada yararlıdır.