Google 致力于为黑人社区推动种族平等。查看具体举措
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Debugowanie natywnego wykorzystania pamięci

Address Sanitizer: HWASan / ASan

Programiści platformy Android używają HWAddressSanitizer (HWASan) do znajdowania błędów pamięci w C / C ++.

Możesz flashować gotowe obrazy HWASan na obsługiwane urządzenia Pixel ze strony ci.android.com ( szczegółowe instrukcje konfiguracji ).

Od Androida 8.0 (Oreo) możliwe jest również używanie ASan do debugowania aplikacji na nierootowanych urządzeniach produkcyjnych. Możesz znaleźć instrukcje na wiki ASan .

Heapprofd

Android 10 obsługuje heapprofd, profiler stosu próbkowania o niskim narzutie. heapprofd umożliwia przypisywanie natywnego wykorzystania pamięci 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 inatywne śledzenie pamięci przy użyciu wywołań zwrotnychlibc, aby uzyskać dokładny opis opcji debugowania dostępnych dla problemów z pamięcią natywną.

libmemunreachable

Biblioteka libmemunreachable systemu Android to natywny detektor wycieków pamięci o zerowym narzutie. Używa nieprecyzyjnego przekazywania elementów bezużytecznych typu „mark-and-sweep” przez całą pamięć natywną, zgłaszając wszelkie niedostępne bloki jako wycieki. Instrukcje użycia znajdują się w dokumentacji libmemunreachable .

Haczyki Malloc

Jeśli chcesz zbudować własne narzędzia, libc Androida obsługuje również przechwytywanie wszystkich alokacji / bezpłatnych wywołań, które mają miejsce podczas wykonywania programu. Zobacz dokumentację malloc_hooks, aby uzyskać instrukcje użytkowania.

Statystyki Malloca

Android obsługuje rozszerzenia mallinfo(3) imalloc_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 <malloc.h> firmy Bionic.

Serwer Dalvik Debug Monitor

Możesz również użyć Dalvik Debug Monitor Server (DDMS), aby uzyskać graficzny widok danych wyjściowych Malloc Debug.

Aby używać DDMS, najpierw włącz jego interfejs pamięci natywnej:

  1. Otwórz ~/.android/ddms.cfg
  2. Dodaj linię: native=true

Po ponownym uruchomieniu DDMS i wybraniu procesu możesz przełączyć się na nową kartę natywnej alokacji i wypełnić ją listą przydziałów. Jest to szczególnie przydatne do debugowania wycieków pamięci.