Deleaker
Donnerstag, den 1. November 2007Ich denke jeder kennt das Problem der Speicherlecks (”Memory Leaks”). Sie gehören zu den Fehlern, die sich am schwersten von allen finden lassen, da sie ja eigentlich gar keine Fehler im eigentlichen Sinne sind. Neulich bin ich auf ein sehr praktisches Programm gestoßen, das einem genau bei dieser Art Fehlern helfen kann. Es heißt Deleaker, und es tut genau das - es sucht und (wenn denn welche da sind) findet Speicherlecks! Aber zunächst eine kleine Erinnerung, was Speicherlecks denn überhaupt sind, wie sie entstehen, und warum sie so schlecht sind.
Unter einem Speicherleck versteht man, dass man reservierten Speicher dem System nicht wieder zurückgibt, so dass es also nicht weiß, dass der Speicher wieder nutzbar wäre. Das passiert ziemlich schnell, und kostet bei kleineren Sachen auch nicht viel (wobei man es natürlich auf jeden Fall vermeiden sollte), aber bei größeren Sachen kann sowas ein ernst zunehmendes Problem darstellen. Vor allem, da man sowas auch nicht leicht findet. Wäre es ein Runtime Error gäbe es kein Problem, aber da es keiner ist, kriegt man davon überhaupt nichts mit.
Und genau da kommt Deleaker ins Spiel. Das Programm bzw Add-In läuft im Hintergrund und überwacht das Programm. Wenn es dann beendet wird, überprüft Deleaker ob es irgendwelche Speicherlecks gibt, zum Beispiel Speicher der mit malloc() gesichert wurde, oder einfach ein Datei-Handle, und listet es einem praktisch unterteilt auf - und gibt sogar die Stelle an, an dem der Speicher reserviert wurde! Jeder der schon einmal mit solchen Problemen gekämpft hat wird erkennen, was für eine unglaublich nützliche Hilfe Deleaker darstellt!
Man kann es auf zweierlei Weisen nutzen. Einmal als eigenständiges Programm, mit dem man das zu überwachende Programm startet, oder als Visual Studio Plugin. Letzteres ist natürlich sehr viel praktischer, aber beide Arten funktionieren tadellos.
Da Bilder bekanntlich mehr als Worte sagen, hier ein kleines Beispiel. Ich weiß, dass man es so natürlich nie machen würde, aber es soll ja auch nur als Demonstration gelten (draufklicken zum Vergrößern):
Und das ist natürlich nur die einfachste Form eines Speicherlecks. Deleaker findet noch viel mehr. Meiner Meinung ein wirklich geniales Programm, das jeder, der sauber programmieren will nutzen sollte.



