Address Sanitizer: HWASan/ASan
Android-Plattformentwickler verwenden HWAddressSanitizer (HWASan), um Speicherfehler in C/C++ zu finden.
Sie können vorkonfigurierte HWASan-Images von ci.android.com auf unterstützte Pixel-Geräte flashen (detaillierte Einrichtungsanleitung).
Seit Android 8.0 (Oreo) ist es auch möglich, ASan zum Debuggen von Apps auf nicht gerooteten Produktionsgeräten zu verwenden. Eine Anleitung dazu finden Sie auf der ASan-WikiHeapprofd
Android 10 unterstützt heapprofd, einen Heap-Profiler mit geringem Overhead. Mit heapprofd können Sie Aufrufstacks in Ihrem Programm die native Arbeitsspeichernutzung zuordnen. Weitere Informationen finden Sie unter . heapprofd – Android Heap Profiler auf der Dokumentationswebsite für Perfetto .
Malloc-Fehlerbehebung
Weitere Informationen: Malloc Debug und Nativ Arbeitsspeicher-Tracking mit libc-Callbacks für eine ausführliche Beschreibung der Debugging-Optionen für Probleme mit nativem Arbeitsspeicher zur Verfügung.
libmemunerreichbar
„libmemunreachable“ von Android ist ein nativer Speicherleck-Erkennung ohne Mehraufwand. Es verwendet einen ungenauen Mark-and-Sweep-Speicherbereiniger, der den gesamten nativen Arbeitsspeicher durchläuft und alle nicht erreichbaren Blöcke als Lecks meldet. Eine Anleitung zur Verwendung finden Sie in der libmemunreachable-Dokumentation.
Malloc-Hooks
Wenn Sie Ihre eigenen Tools erstellen möchten, unterstützt die libc von Android auch das Abfangen aller -zuweisungen/kostenlose Aufrufe, die während der Programmausführung erfolgen. Eine Anleitung zur Verwendung finden Sie in der malloc_hooks-Dokumentation.
Malloc-Statistik
Android unterstützt die Erweiterungen mallinfo(3)
und malloc_info(3)
von <malloc.h>
.
Die Funktion malloc_info
ist ab Android 6.0 (Marshmallow) verfügbar und
ist sein XML-Schema im
<malloc.h>
Dalvik Debug Monitor Server
Sie können auch das Tool Dalvik Debug Server (DDMS) überwachen, um eine grafische Darstellung von Malloc Debug zu erhalten .
Aktivieren Sie zur Verwendung von DDMS zuerst die Benutzeroberfläche des nativen Arbeitsspeichers:
~/.android/ddms.cfg
öffnen- Fügen Sie folgende Zeile hinzu:
native=true
Nachdem Sie DDMS neu gestartet und einen Prozess ausgewählt haben, können Sie zum neuen native Zuweisung und fügen Sie eine Liste von Zuweisungen ein. Das ist besonders nützlich, um Speicherlecks zu beheben.