Yerel kilitlenmelerde hata ayıklama
Yerel bir kilitlenme dökümünü veya mezar taşını anlamakta zorlanıyorsanız Yerel Android Platform Kodunda Hata Ayıklama iyi bir giriştir.
Sık karşılaşılan kilitlenme türleri ve bunların nasıl inceleneceği ile ilgili daha kapsamlı bir katalog için Yerel Kilitlenmeleri Teşhis Etme.
ndk-Stack aracı, kilitlenmelerinizi simgeselleştirmeye yardımcı olabilir.
Android Studio'da kilitlenmelerle ilgili hataları genel hatlarıyla açıklandığı şekilde
Uygulama hatalarını ayıkla belgeleri. Örneğin
komut satırı, ndk-gdb, gdb
veya
Kabuktan lldb
.
Uygulamaların mezar kalıntılarına doğrudan erişmesine izin ver
Android 12'den (API düzeyi 31) itibaren uygulamanızın yerel kilitlenmesine erişebilirsiniz
tombstone olarak
protokol arabelleğine
ApplicationExitInfo.getTraceInputStream()
yöntemidir. Protokol arabelleği, bu şema kullanılarak serileştirilir.
Daha önce bu bilgilere ulaşmanın tek yolu
Android Debug Bridge (adb).
Aşağıda, bunu uygulamanızda nasıl kullanacağınıza ilişkin bir örnek verilmiştir:
ActivityManager activityManager: ActivityManager = getSystemService(Context.ACTIVITY_SERVICE);
MutableList<ApplicationExitInfo> exitReasons = activityManager.getHistoricalProcessExitReasons(/* packageName = */ null, /* pid = */ 0, /* maxNum = */ 5);
for (ApplicationExitInfo aei: exitReasons) {
if (aei.getReason() == REASON_CRASH_NATIVE) {
// Get the tombstone input stream.
InputStream trace = aei.getTraceInputStream();
// The tombstone parser built with protoc uses the tombstone schema, then parses the trace.
Tombstone tombstone = Tombstone.parseFrom(trace);
}
}
Yerel bellek sorunlarını ayıklama
Adres Dezenfektanı (HWASan/ASan)
HWAddress Sanitizer (HWASan) ve Adres Temizleyici (ASan), Valgrind'e benzer ancak Android'de çok daha hızlı ve çok daha iyi destekleniyor.
Bunlar, Android'de bellek hatalarını ayıklamak için en iyi seçeneğinizdir.
Malloc hata ayıklaması
Görüntüleyin Malloc Hata Ayıklaması ve libc Geri Çağırmaları ile Yerel Bellek İzleme C kitaplığının yerleşik hata ayıklama seçeneklerinin ayrıntılı açıklaması için yerel bellek sorunları.
Malloc kancaları
Kendi araçlarınızı geliştirmek istiyorsanız Android'in libc'si müdahaleleri de destekler Program yürütülürken gerçekleşen tüm tahsise/ücretsiz aramalara izin verilir. Bkz. malloc_hooks belgeleri bakın.
Malloc istatistikleri
Android,
alışveriş merkezi(3)
ve
malloc_info(3)
uzantılar <malloc.h>
.
malloc_info
işlevi, Android 6.0 (Marshmallow) ve
daha yüksek olduğunu ve XML şemasının Bionic’in
malloc.h
kullanabilirsiniz.
Profil oluşturma
Yerel kodun CPU profilini oluşturmak için Simpleperf kullanabilirsiniz.