Speicher Checker
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

SpeicherChecker sind Werkzeuge, mit denen man ein MemoryLeak oder Speicherzugriffsfehler finden oder vermeiden kann. Selbst bei Interpretersprachen kommt man manchmal nicht um die Verwendung eines Speichercheckers herum, wenn etwa das Benutzerinterface aus einer Bindung an ein C++-Toolkit besteht oder wenn ein Fehler in der Virtuellen Maschine vorliegt.

Arbeitsweise

Bei Durchsicht der verschiedenen frei verfügbaren Tools fällt schnell auf, dass es keine eierlegende Wollmilchsau gibt. Will man seine Anwendung mal so richtig durchchecken, muss man die Werkzeuge der Reihe nach durchprobieren. Kommerzielle Tools, wie Rational Purify versprechen mehr Komfort.

ToDo: Halten die Kommerziellen Tools, was sie versprechen? ToDo: Einige Techniken exemplarisch anreißen.

Frei verfügbar

Kommerziell

Interpretersprachen

In Script- und Interpretersprachen kann ein Teil der Speicherverwaltung außerhalb der Virtuellen Maschine stattfinden. In solchen Fällen müssen neben den oben genannten Speichercheckern weitere Werkzeuge zum Einsatz kommen. Diese sind meist sehr gut in die Entwicklungsumgebung integriert, aber die Werkzeugpalette sieht ähnlich aus: Profiler, Tools die Footprints vergleichen, Tools für Memory-Tracing, etc...

Erfahrungsberichte und Tipps

Tipp: Memory Snapshots vergleichen

In Verbindung mit einem GarbageCollector sucht man mit einem Speicherchecker vor allem nicht gekappte Referenzen. Solche verhindern, dass eigentlich nicht mehr benötigte Objekte vom GC erfasst und weggeräumt werden. Hier sind Memory-Footprint Vergleiche äußerst hilfreich.

Dazu ein in SpracheSmalltalk sehr typisches, leicht übertragbares Beispiel: Beim MVC EntwurfsMuster ( WardsWiki:ModelViewController) spielt der View die Rolle eines Beobachters des Models ( WardsWiki:ObserverPattern). Wenn also ein Vergleich zweier Memory-Footprints unerwartet viele GUI-Objekte ausweist, dann hat man beim Schließen der betroffenen Fenster vermutlich vergessen, die Beobachterbeziehung zwischen Model und View zu beenden.

Erfahrungsbericht: Electric Fence, Valgrind, Memprof

Electric Fence war für unser Projekt (ca. 3 Entwickler/2 Jahre/C++/Linux) von eher geringem Nutzen, weil die Palette der gefundenen Fehler nicht besonders groß ist. Läuft die zu debuggende Anwendung eh schon am Limit dessen, was der Entwicklungsrechner hergibt, hat man mit Debugger und Electric Fence noch zwei zusätzliche Speicherverbraucher und Performanzkiller am Start. Die Benutzung ist jedoch einfach, und bevor man gar keine Tools einsetzt...

Valgrind hat bei uns im Projekt alle begeistert. Nach den eher mäßigen Resultaten mit Electric Fence hatten wir nun gleich eine ganze Reihe von Warnungen, denen wir nachgehen konnten. Binnen kürzester Zeit waren zwei Bugs und viele unschöne Kleinigkeiten gefunden. Und die Bedienung: Simpler geht's wohl kaum, höchstens mit einer GUI.

Memprof sieht so aus, als könnte es ein nettes Tool sein. Aber ich konnte partout nichts damit anfangen. Ich habe es mit verschiedenen Programmen versucht: ein paar kleinen C-Programme, fette C++ Programme, Anwendungen mit und ohne GUI. Mir scheint, es ist überhaupt nur für C geeignet und dort eher für kleinere Progrämmchen. Aber ich kann auch völlig falsch liegen. Letztlich krankt die Benutzung daran, dass es weder Doku noch eine rege Benutzergruppe zu geben scheint. -- SaschaDördelmann

Diskussion

Kennt jemand einen freien Speicherchecker für Windows? So eine Art Valgrind für Windows (ohne cygwin/mingw) wäre z. B. cool. -- SaschaDördelmann

Ja, Rational Purify sollte den gleichen Zweck erfüllen, zu finden unter http://www-306.ibm.com/software/awdtools/purify/win/, gibt es allerdings nur als Trial Version für 14 Tage, sollte aber für einmaligen Gebrauch seinen Zweck erfüllen.


KategorieSoftwareTool
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 25. September 2004 12:37 (diff))
Suchbegriff: gesucht wird
im Titel
im Text