Valgrind ist eins der wichtigsten Debugging-Tools für C/C++-Programmierer unter x86/Linux.

Homepage: http://valgrind.org/

Lizenz: GPL, Version 2

Valgrind führt ein Programm vollständig in einer Virtual Machine aus und weiß daher genau, welche Speicherbereiche bereits initialisiert, allokiert oder freigegeben wurden. Zusätzlich werden alle Datenstrukturen gepadded, so dass erkannt wird, wenn Speicherbereiche angesprochen werden, die eigentlich nicht angesprochen werden sollten.

Dadurch kann Valgrind double frees, Buffer-Überlaufe (off-by-one etc.) oder Sprungentscheidungen (if .. else), die auf noch nicht initialisierten Variablen beruhen, erkennen. Wer sich in einem C/C++-Programm mit einem heisenbug oder mysteriösen Abstürzen in sonst eigentlich tadellosen Bibliotheken konfrontiert sieht, für den ist valgrind oft das erste Hilfsmittel. Es lohnt sich aber auch, im regulären Testbetrieb, seine Programme standardmäßig mit valgrind zu prüfen. Oft werden dadurch Programmierfehler gefunden, bevor sie überhaupt erst ein Problem werden.1

Zusätzlich zu den oben erwähnten Funktionen erleichtert valgrind auch das Aufspüren von Speicherlecks und anderen Problemen.

Valgrind funktioniert am Besten mit Programmen, die Debugging-Information enthalten (also mit dem Flag -g in gcc/g++ kompiliert wurden), damit es Probleme zeilengenau aufspüren kann.

Eine Alternative zum Aufspüren von Speicherlecks mit graphischer Benutzeroberfläche ist Memprof, das aber ebenfalls nur für x86 zu haben ist.

  1. Alternativ kann man auch viel mit Python programmieren, da entstehen solche Probs erst gar nicht. (1)

valgrind (zuletzt geändert am 2007-12-23 22:49:28 durch localhost)