Ablaufsysteme
Speicherdebugger
Problem
Beim Programmieren in C oder C++ ohne automatische Speicherverwaltung programmiert man oft fehlerhaft:
- Schreibzugriffe über allokierten Speicher hinaus
- Speicherlöcher: Nicht mehr benutztre Speicher wird nicht freigegeben
Fehler dieser Art sind sehr schwer zu finden. Dazu sind tools sehr nützlich:
Tools
- glibc Allocation Debugging
- die GNU libc hat ein Logging der Speichernutzung eingebaut und man kann
mit mtrace Speicherlöcher finden.
- Die libcwd
- kann unter andern auch die Speicherallokationen loggen.
- DB Alloc
-
- mpatrol
- Linkt (Dynamisch zur Laufzeit oder statisch zur Linkzeit) eine eigene Implementierungsbibliothek der Speicherrotinen hinzu. Diese loggen die dynamischen Speicheranweisungen mit. Es kann vor und nach dem eigentlichen allokierten Speicherblock noch ein Sicherheitsbereich mit allokiert werden, der auf Überschreibung getestet wird. Freigegebener Speicher wird durch ein Bitmuster belegt, um Lesezugriffe aufzudecken.
- valgrind
- Kontrolle durch virtuelle Maschine mit Instrumentierung,
Cache-Profiling
- GNU Checker
-
Techniken
- FilpCode Tutorial über Speicherlöcher
- Hier wird beschreiben, wie man die Operatoren new und delete überladen kann um Speicherlöcher herauszufinden.
Allgemeine Arbeiten
- Debugging Tools for Dynamic Storage Allocation and Memory Management
Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber