Yerel Bellek Kullanımında Hata Ayıklama

Adres Temizleyici: HWASan / ASan

Android platform 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 adresinden desteklenen Pixel cihazlara aktarabilirsiniz ( ayrıntılı kurulum talimatları ).

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

Heapprofd

Android 10, düşük maliyetli, örnekleme yığın profil oluşturucusu olan heapprofd'yi destekler. heapprofd, yerel bellek kullanımını programınızdaki çağrı yığınlarına atamanızı sağlar. 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 kapsamlı bir açıklaması için,libc Geri Çağırmalarınıkullanarak Malloc Hata Ayıklama veYerel Bellek İzleme'ye bakın.

libmemunreachable

Android'in libmemunreachable'ı sıfır ek yük yerel bellek sızıntı detektörüdür. Ulaşılamayan blokları sızıntı olarak bildirerek, tüm yerel bellek üzerinden kesin olmayan bir işaret ve süpür çöp toplayıcı geçişi kullanır. 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 çağrıların yakalanmasını da destekler. Kullanım talimatları için malloc_hooks belgelerine bakın.

Malloc istatistikleri

Android, mallinfo(3) vemalloc_info(3) uzantılarını <malloc.h> . malloc_info işlevi Android 6.0 (Marshmallow) ve daha yüksek sürümlerde mevcuttur ve XML şeması <malloc.h> belgelenmiştir.

Dalvik Hata Ayıklama İzleme Sunucusu

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

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

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

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