Adres środka dezynfekującego: HWASan/ASan
Twórcy platform Android używają HWAddressSanitizer (HWASan) do wyszukiwania błędów pamięci w C/C++.
Możesz flashować gotowe obrazy HWASan na obsługiwanych urządzeniach Pixel ze strony ci.android.com ( szczegółowe instrukcje konfiguracji ).
Od wersji 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, profiler sterty próbkujący o niskim nakładzie pracy. heapprofd pozwala przypisać użycie pamięci natywnej do stosów wywołań w programie. Aby uzyskać więcej informacji, zobacz heapprofd — Android Heap Profiler w witrynie dokumentacji Perfetto .
Debugowanie Malloc
Zobacz Debugowanie Malloc i śledzenie pamięci natywnej przy użyciu wywołań zwrotnych libc, aby uzyskać dokładny opis opcji debugowania dostępnych w przypadku problemów z pamięcią natywną.
biblioteka libmemunreachable
Libmemunreachable dla Androida to natywny detektor wycieków pamięci o zerowym obciążeniu. Używa nieprecyzyjnego modułu zbierającego elementy bezużyteczne typu „znacz i przeciągnij” po całej pamięci natywnej, zgłaszając wszelkie nieosiągalne bloki jako wycieki. Instrukcje użytkowania można znaleźć w dokumentacji libmemunreachable .
Haczyki Malloc
Jeśli chcesz zbudować własne narzędzia, biblioteka libc systemu Android obsługuje także przechwytywanie wszystkich wywołań alokacyjnych/bezpłatnych, które mają miejsce podczas wykonywania programu. Instrukcje użytkowania można znaleźć w dokumentacji malloc_hooks .
Statystyki Malloc
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żna także użyć serwera Dalvik Debug Monitor Server (DDMS), aby uzyskać graficzny widok wyników debugowania Malloc.
Aby korzystać z DDMS, najpierw włącz interfejs pamięci natywnej:
- Otwórz plik
~/.android/ddms.cfg
- Dodaj linię:
native=true
Po ponownym uruchomieniu DDMS i wybraniu procesu możesz przejść do nowej zakładki natywnej alokacji i wypełnić ją listą alokacji. Jest to szczególnie przydatne do debugowania wycieków pamięci.