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.

Hazır HWASan resimlerini ci.android.com adresinden desteklenen Pixel cihazlara yükleyebilirsiniz (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, düşük maliyetli, örneklemeli bir yığın profili olan heapprofd'yi 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ıklama

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

libmemunreachable

Android'in libmemunreachable, sıfır yükü olan bir yerel bellek sızıntısı algılayıcısı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. Kullanım talimatları için libmemunreachable dokümanını inceleyin.

Malloc kancaları

Kendi araçlarınızı oluşturmak istiyorsanız Android'in libc'si, program yürütülmesi sırasında gerçekleşen tüm ayırma/serbest bırakma çağrılarının yakalanmasını da destekler. Kullanım talimatları için malloc_hooks dokümantasyonuna bakın.

Malloc istatistikleri

Android, <malloc.h>'e kadar 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 İzleyici Sunucusu

Malloc hata ayıklama çıkışının grafiksel görünümünü elde etmek için Dalvik Hata Ayıklama İzleyici Sunucusu'nu (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. Satırı ekleyin: native=true

DDMS'yi yeniden başlatıp bir işlem seçtikten sonra yeni doğal tahsis sekmesine geçebilir ve bu sekmeyi tahsislerin listesiyle doldurabilirsiniz. Bu, özellikle bellek sızıntılarını hata ayıklamada yararlıdır.