Środek do dezynfekcji rąk: HWASan/ASan
Deweloperzy platformy Android używają narzędzia HWAddressSanitizer (HWASan) do znajdowania błędów pamięci w języku C/C++.
Gotowe obrazy HWASan można wgrywać na obsługiwane urządzenia Pixel ze strony ci.android.com (szczegółowe instrukcje konfiguracji).
Od Androida 8.0 (Oreo) można też używać ASan do debugowania aplikacji na produkcyjnych urządzeniach z Androidem, które nie mają uprawnień roota. Instrukcje znajdziesz w wiki ASANA.Heapprofd
Android 10 obsługuje narzędzie heapprofd, czyli narzędzie do profilowania stosu o małym nakładzie pracy. Za pomocą narzędzia heapprofd możesz przypisać natywny pobór pamięci do stosu wywołań w programie. Więcej informacji znajdziesz w heapprofd – profilowanie stosu na Androidzie w witrynie dokumentacji Peretto.
Debugowanie Malloc
Szczegółowe informacje o dostępnych opcjach debugowania problemów z pamięcią natywnej znajdziesz w artykułach Malloc Debug i Natywne śledzenie pamięci za pomocą wywołań zwrotnych libc.
libmemunreachable
Biblioteka libmemunreachable na Androidzie to bezpłatne narzędzie do wykrywania wycieków pamięci natywnej. Wykorzystuje on nieprecyzyjny mechanizm usuwania nieużywanych danych, który sprawdza całą pamięć natywnych aplikacji, zgłaszając wszystkie niedostępne bloki jako wycieki. Instrukcje dotyczące korzystania z tej funkcji znajdziesz w dokumentacji libmemunreachable.
łapy gromadzące malloc;
Jeśli chcesz stworzyć własne narzędzia, pakiet libc Androida obsługuje też przechwytywanie wszystkich przydziałów/bezpłatnych wywołań, które mają miejsce podczas wykonywania programu. Instrukcje dotyczące korzystania z tego narzędzia znajdziesz w dokumentacji malloc_hooks.
Statystyki zarezerwowanej pamięci
Android obsługuje rozszerzenia <malloc.h>
mallinfo(3)
i malloc_info(3)
.
Funkcja malloc_info
jest dostępna w Androidzie 6.0 (Marshmallow) i nowszych wersjach. Schemat XML tej funkcji jest opisany w dokumentacji Bionic: <malloc.h>
.
Serwer Dalvik Debug Monitor
Możesz też skorzystać z serwera Dalvik Debug Monitor Server (DDMS), aby zobaczyć graficzny widok danych wyjściowych debugowania Malloc.
Aby korzystać z DMS, najpierw włącz interfejs użytkownika pamięci:
- Otwórz aplikację
~/.android/ddms.cfg
- Dodaj wiersz:
native=true
Po ponownym uruchomieniu DDMS i wybraniu procesu możesz przejść na nową kartę przydziału natywnego i zapełnić ją listą alokacji. Jest to szczególnie przydatne przy debugowaniu wycieków pamięci.