Frage

Was ist das beste Werkzeug, Speicherlecks zu erkennen.

Sowohl frei und nicht frei.

Danke

War es hilfreich?

Lösung

Wir verwenden Eurekalog bei unserer Arbeit in Delphi 7. Es ist eine Ausnahmebehandlungskomponente, die über Ausnahmen (einschließlich Aufrufliste! Umgebungsvariablen, etc.) auch für Zugriffsverletzungen sehr detaillierte Informationen gibt. Aber ein anderes großartiges Feature ist, dass man es auf Fehler auf Speicherlecks sagen kann, was die genaue Codezeile zeigt, wo der Speicher / Objekt an erster Stelle zugewiesen wurde! Es ist ein Handelsprodukt, aber ich würde es immer noch sehr empfehlen.

Andere Tipps

FastMM ist ein kostenloser (Quelle verfügbar) Speicherleckdetektor integrierte bereits in den neuesten Versionen von Delphi. Ich hatte nie eine Notwendigkeit für irgendetwas anderes.

Es ist viel besser BTW die Möglichkeiten der Speicherlecks zu begrenzen, wenn Codierung, anstatt später, sie zu finden. Einige Tipps:

Verwenden Sie immer versuchen und schließlich in Ihrem Code erzeugten Objekte zu befreien. Besser diesen Code sofort zu schreiben, und dann Code schreiben, um die Objekte zu verwenden. Noch besser zu Einsatz von IDE-Funktionen wie Code-Vorlagen zu machen.

Verwenden Sie nur Funktionen, die dynamisch zugewiesenen Objekte zurück, wenn es unbedingt notwendig ist. Es ist im Allgemeinen besser auf Objekte als Parameter übergeben als erstellen und sie zurück. Zum Beispiel dieses

procedure getChoices(var AChoices: TStrings);

wäre viel besser als

function getChoices: TStrings;

da kein Potential von versehentlichem das erstellte TStrings Objekt undicht.

würde ich die volle FastMM4-Version über die in Delphi enthalten Version empfehlen. Die Vollversion gibt Ihnen einen vollständigen und ausführlichen Bericht protokolliert anstelle der dialogbox einzureichen. Kombinieren Sie dies mit einem homebrewed 'Memoryleak-Logfile-unterscheiden' your're alles für eine spannende Bughunt.

AQTime ist sehr gut. Es tut auch andere Dinge wie für die Leistungsprofilerstellung. Und es erfordert keine Änderungen in Ihrem Code. Natürlich mit Debug-Informationen kompiliert bessere Ergebnisse hilft zu geben.

ich immer ReportMemoryLeaksOnShutdown verwenden: = (DebugHook <> 0); so dass ich nur die undichten Stellen gemeldet, wenn ich das Debuggen.

ps wollte dies in einem Kommentar zu veröffentlichen, aber ich nicht die Rechte haben noch ..

Sie können einen Blick auf diese Coderage 2 Sitzung geben: Kampf Speicherverluste für Dummies . Es zeigt vor allem, wie FastMM verwenden, um Speicherlecks in Delphi zu verhindern / zu erkennen. War für D2007, aber immer noch relevant für D2009.

FastMM ist sehr gut. Ich weiß, 3 oder 4 kostenlos Speicher-Manager für Delphi. Es dauert weniger als Stunde alle um sie zu überprüfen, führt in der Regel benötigen sie nur 3 Zeilen Code in einem Projekt embed'em.

Ich benutze MadExcept , weil es für den persönlichen Gebrauch kostenlos.

Versuchen Sie UMLd 1.0 Wir haben versucht und getestet !! Intelligente Lösung für ein leakfree Delphi Application Development und Bug-Reporting-Tool für Delphi-Entwicklung.

http://www.torry.net/authorsmore.php?id= 7616 & sort = ID

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top