Yerel Bellek Kullanımında Hata Ayıklama

Adres Temizleyici: HWASan/ASan

Android platformu geliştiricileri kullanmak HWAddressSanitizer C / C ++ bellek hataları bulmak için (Hwasan).

Sen desteklenen Piksel cihazlarına önceden oluşturulmuş Hwasan görüntüleri yanıp sönebilir ci.android.com ( 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. Sen talimatları bulabilirsiniz Asan wiki .

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. Bkz Android Öbek Profiler - heapprofd üzerinde Perfetto dokümantasyon sitesinde daha fazla bilgi için.

Malloc hata ayıklama

Bkz Malloc ayıklama veYerli Bellek İzleme Httpserversockethandler libc kullanarak yerli bellek sorunlar için kullanılabilir hata ayıklama seçeneklerinin doğru bir şekilde açıklaması için.

libmemunulaşılabilir

Android'in libmemunreachable'ı, sıfır ek yük 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. Bkz libmemunreachable belgelere kullanım talimatları için.

Malloc kancaları

Kendi araçlarınızı oluşturmak istiyorsanız, Android'in libc'si, program yürütme sırasında gerçekleşen tüm tahsis/ücretsiz aramaları durdurmayı da destekler. Bkz malloc_hooks belgelere kullanım talimatları için.

Malloc istatistikleri

Android destekleri mallinfo(3) ve malloc_info(3) uzantıları için <malloc.h> . malloc_info fonksiyon Android 6.0 (Marshmallow) mevcuttur ve daha yüksek olduğunu ve bunun XML şeması Biyonik en belgelenmiştir <malloc.h> .

Dalvik Hata Ayıklama İzleyici Sunucusu

Ayrıca kullanabilirsiniz Dalvik Debug Monitör Sunucu Malloc ayıklama çıkışı grafik bir görünümünü elde etmek için (DDMS).

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

  1. ~/.android/ddms.cfg
  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.