Adres Sanitizer: HWASan/ASan
Twórcy platformy Android używają HWAddressSanitizer (HWASan) do znajdowania błędów pamięci w C/C++.
Gotowe obrazy HWASan można przesyłać do obsługiwanych urządzeń Pixel ze strony ci.android.com ( szczegółowe instrukcje dotyczące konfiguracji ).
Od Androida 8.0 (Oreo) możliwe jest również używanie ASan do debugowania aplikacji na nierootowanych urządzeniach produkcyjnych. Instrukcje można znaleźć na wiki ASan .Heapprofd
Android 10 obsługuje heapprofd, narzędzie do profilowania sterty próbkowania o niskim narzucie. heapprofd pozwala przypisać użycie pamięci natywnej do stosów wywołań w twoim programie. Zobacz heapprofd — Android Heap Profiler w witrynie dokumentacji Perfetto, aby uzyskać więcej informacji.
Debugowanie Malloca
Zobacz Debugowanie Malloc i Śledzenie pamięci natywnej przy użyciu wywołań zwrotnych libc, aby uzyskać dokładny opis opcji debugowania dostępnych dla problemów z pamięcią natywną.
libmemunreachable
Libmemunreachable na Androida to natywny wykrywacz wycieków pamięci bez narzutów. Wykorzystuje nieprecyzyjny proces zbierania elementów bezużytecznych typu mark-and-sweep, który przechodzi przez całą natywną pamięć, zgłaszając wszelkie nieosiągalne bloki jako wycieki. Zobacz dokumentację libmemunreachable , aby uzyskać instrukcje użytkowania.
Haczyki Malloc
Jeśli chcesz zbudować własne narzędzia, libc Androida obsługuje również przechwytywanie wszystkich wywołań alokacji/darmowych, które mają miejsce podczas wykonywania programu. Zobacz dokumentację malloc_hooks , aby uzyskać instrukcje użytkowania.
Statystyki Malloca
Android obsługuje rozszerzenia mallinfo(3)
i malloc_info(3)
do <malloc.h>
. Funkcja malloc_info
jest dostępna w systemie Android 6.0 (Marshmallow) i nowszych, a jej schemat XML jest udokumentowany w pliku <malloc.h>
firmy Bionic.
Serwer monitorowania debugowania Dalvik
Możesz także użyć Dalvik Debug Monitor Server (DDMS), aby uzyskać graficzny widok wyników Malloc Debug.
Aby korzystać z DDMS, najpierw włącz jego natywny interfejs pamięci:
- Otwórz plik
~/.android/ddms.cfg
- Dodaj linię:
native=true
Po ponownym uruchomieniu DDMS i wybraniu procesu możesz przełączyć się na nową kartę alokacji natywnej i wypełnić ją listą alokacji. Jest to szczególnie przydatne do debugowania wycieków pamięci.