Debuggen der nativen Speichernutzung

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Adresse Sanitizer: HWASan/ASan

Entwickler von Android-Plattformen verwenden HWAddressSanitizer (HWASan), um Speicherfehler in C/C++ zu finden.

Sie können vorgefertigte HWAAn-Images von ci.android.com auf unterstützte Pixel-Geräte flashen ( detaillierte Einrichtungsanweisungen ).

Seit Android 8.0 (Oreo) ist es auch möglich, ASan zum Debuggen von Apps auf nicht gerooteten Produktionsgeräten zu verwenden. Anleitungen finden Sie im ASan-Wiki .

Heapprofd

Android 10 unterstützt heapprofd, einen Sampling-Heap-Profiler mit geringem Overhead. Mit heapprofd können Sie Callstacks in Ihrem Programm die Nutzung des nativen Speichers zuordnen. Weitere Informationen finden Sie unter heapprofd – Android Heap Profiler auf der Perfetto-Dokumentationsseite .

Malloc-Debug

Eine ausführliche Beschreibung der verfügbaren Debugging-Optionen für Probleme mit nativem Speicher finden Sie unter Malloc-Debugging undNachverfolgung des nativen Speichers mithilfe von libc-Callbacks .

libmeunreachable

libmemunreachable von Android ist ein nativer Speicherleckdetektor ohne Overhead. Es verwendet einen ungenauen Mark-and-Sweep-Garbage-Collector-Pass über den gesamten nativen Speicher und meldet alle nicht erreichbaren Blöcke als Lecks. Anweisungen zur Verwendung finden Sie in der libmemunreachable-Dokumentation .

Malloc-Haken

Wenn Sie Ihre eigenen Tools erstellen möchten, unterstützt die libc von Android auch das Abfangen aller Zuweisungs-/freien Aufrufe, die während der Programmausführung auftreten. Anweisungen zur Verwendung finden Sie in der malloc_hooks-Dokumentation .

Malloc-Statistiken

Android unterstützt die mallinfo(3) und malloc_info(3) für <malloc.h> . Die Funktion malloc_info ist in Android 6.0 (Marshmallow) und höher verfügbar und ihr XML-Schema ist in <malloc.h> .

Dalvik Debug Monitor Server

Sie können auch den Dalvik Debug Monitor Server (DDMS) verwenden, um eine grafische Ansicht der Malloc Debug-Ausgabe zu erhalten.

Um DDMS zu verwenden, aktivieren Sie zuerst die Benutzeroberfläche des nativen Speichers:

  1. Öffnen ~/.android/ddms.cfg
  2. Fügen Sie die Zeile hinzu: native=true

Nach dem Neustart von DDMS und der Auswahl eines Prozesses können Sie zur neuen Registerkarte „Native Zuordnung“ wechseln und diese mit einer Liste von Zuordnungen füllen. Dies ist besonders nützlich zum Debuggen von Speicherlecks.