Yerel Bellek Kullanımında Hata Ayıklama

Adres Temizleyici: HWASan/ASan

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

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

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

Çok profd

Android 10, düşük maliyetli, örnekleme yığın profili oluşturucusu olan heapprofd'yi 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ına yönelik mevcut hata ayıklama seçeneklerinin kapsamlı bir açıklaması için libc Geri Aramalarını kullanarak Malloc Hata Ayıklama ve Yerel Bellek İzleme'ye bakın.

libmeunreachable

Android'in libmemunreachable'ı sıfır yüke sahip yerel bellek sızıntısı dedektörüdür. Tüm yerel bellek üzerinde 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 aynı zamanda programın yürütülmesi sırasında gerçekleşen tüm tahsis/ücretsiz aramaların durdurulmasını 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 üzeri sürümlerde mevcuttur ve XML şeması Bionic'in <malloc.h> dosyasında belgelenmiştir.

Dalvik Hata Ayıklama Monitörü Sunucusu

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

DDMS'yi kullanmak için öncelikle yerel bellek kullanıcı arayüzünü açın:

  1. ~/.android/ddms.cfg dosyasını açın
  2. Şu satırı ekleyin: native=true

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