Yerel Bellek Kullanımında Hata Ayıklama

Adres Temizleyici: HWASan/ASan

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

Önceden oluşturulmuş HWASan görüntülerini ci.android.com'dan desteklenen Pixel cihazlarına flaş edebilirsiniz ( ayrıntılı kurulum talimatları ).

Android 8.0'dan (Oreo) beri, köklü olmayan üretim cihazlarındaki uygulamalarda hata ayıklamak için ASan'ı kullanmak da mümkündür. Talimatları ASan wiki'sinde bulabilirsiniz.

heapprofd

Android 10, düşük maliyetli, örnekleme yığın profili oluşturucu olan heapprofd'u destekler. heapprofd, yerel bellek kullanımını programınızdaki çağrı yığınlarına bağlamanıza olanak tanır. Daha fazla bilgi için Perfetto dokümantasyon sitesinde heapprofd - Android Heap Profiler'a bakın.

Malloc hata ayıklama

Yerel bellek sorunları için kullanılabilen hata ayıklama seçeneklerinin ayrıntılı açıklaması içinlibc Geri Aramaları kullanarak Malloc Hata Ayıklama ve Yerel Bellek İzleme'ye bakın.

libmemunulaşılabilir

Android'in libmemunreachable'ı, sıfır yüke dayalı bir yerel bellek sızıntısı detektörüdür. Tüm yerel bellek üzerinden kesin olmayan bir işaretle ve süpür çöp toplayıcı geçişi kullanır ve erişilemeyen 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ın yürütülmesi sırasında meydana gelen tüm tahsis/ücretsiz aramaları durdurmayı da destekler. Kullanım talimatları için malloc_hooks belgelerine bakın.

Malloc istatistikleri

Android, <malloc.h> öğesinin mallinfo(3) ve malloc_info(3) uzantılarını destekler. malloc_info işlevi Android 6.0 (Marshmallow) ve üzeri sürümlerde mevcuttur ve XML şeması <malloc.h> belgelenmiştir.

Dalvik Hata Ayıklama İzleyici Sunucusu

Malloc Hata Ayıklama çıktısının grafiksel bir görünümünü elde etmek için Dalvik Hata Ayıklama İzleyici Sunucusunu (DDMS) da kullanabilirsiniz.

DDMS'yi kullanmak için önce yerel bellek kullanıcı arabirimini açın:

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

DDMS'yi yeniden başlattıktan ve bir süreç seçtikten sonra, yeni yerel tahsis sekmesine geçebilir ve onu bir tahsis listesiyle doldurabilirsiniz. Bu, özellikle bellek sızıntılarında hata ayıklamak için kullanışlıdır.