Frage

Welche Speicher-Leck-Detektoren haben, hatten die Leute eine gute Erfahrung mit?

Hier ist eine Zusammenfassung der Antworten bisher:

Valgrind - Instrumentation framework für den Aufbau dynamischer Analyse-tools.

Elektrische Zaun - Ein tool, das funktioniert mit GDB

Schiene - Annotation-Assisted-Leichte Statische Prüfung

Glow-Code - Dies ist ein komplettes Echtzeit-performance und Speicher-profiler für Windows und .NET-Programmierer, die Entwicklung von Anwendungen mit C++, C#, oder alle .NET Framework

Sehen Sie hierzu auch das stackoverflow-post.

War es hilfreich?

Lösung

die zweite valgrind...und ich werde hinzufügen elektrische Zaun.

Andere Tipps

Valgrind unter linux ist Recht gut;Ich habe keine Erfahrung unter Windows mit diesem.

Wenn Sie das Geld haben: IBM Rational Purify ist eine äußerst leistungsfähige Industrie-Stärke Speicher und Speicher Korruption Detektor für C/C++.Existiert für Windows, Solaris und Linux.Wenn Sie linux nur wollen und eine günstige Lösung, gehen Sie für Valgrind.

Schmutzfänger für den gcc!Tatsächlich stellt die Kontrollen, die in die ausführbare Datei ein.Fügen Sie einfach

-fmudflap -lmudflap

zu Ihrem gcc-flags.

lint (sehr ähnlichen open-source-tool namens schiene)

Auch Wert verwenden, wenn man unter Linux mit glibc ist die integrierte debug-heap-code.Um es zu verwenden, Verbindung mit -lmcheck oder definieren (und export) der MALLOC_CHECK_ Umgebungsvariable mit dem Wert 1, 2 oder 3. Die glibc-Handbuch finden Sie weitere Informationen.

Dieser Modus ist besonders nützlich für die Erkennung von Doppel-befreit, und es findet oft schreibt außerhalb der zugewiesenen Speicherbereich bei einem kostenlosen.Ich glaube nicht, dass es Berichte Speicherleck.

Ich hatte schon einige hits mit cppcheck, die nicht die statische Analyse nur.Es ist open source und hat eine command-line-interface (habe ich nicht in irgendeiner anderen Weise).

Schmerzhaft, aber wenn Sie hatten eine..
Ich würde empfehlen, die DevPartner BoundsChecker suite..das ist es, was die Menschen an meinem Arbeitsplatz für diesen Zweck verwenden.Bezahlt n proprietären..nicht freeware.

Ich habe minimale Liebe für alle Speicher-Leck-Detektoren.In der Regel gibt es sind viel zu viele falsch positive Ergebnisse für Sie von nutzen sein.Ich würde empfehlen, diese beiden als beiong die am wenigsten intrusive:

GlowCode

Debug-heap

Für Win32 debugging von Speicherlecks habe ich bereits sehr gute Erfahrungen mit dem einfachen alten CRT-Debug-Heap, kommt eine lib mit Visual C.

In einem Debug-build malloc (et al) bekommen neu definiert als _malloc_dbg (et al) und es gibt andere Aufrufe zum abrufen von Ergebnissen, die alle undefiniert, wenn _DEBUG ist nicht festgelegt.Es stellt alle Arten der Grenze Wachen über den Haufen, und ermöglicht Ihnen die Anzeige der Ergebnisse zu jeder Zeit.

Ich hatte ein paar false positives, wenn ich war witting einige Zeit Routinen, die verwirrt mit der Bibliothek Laufzeit Zuweisungen, bis ich entdeckte _CRT_BLOCK.

Ich hatte zu produzieren, zuerst auf DOS, dann Win32-Konsole und Dienstleistungen, die ausgeführt würde, für immer.Soweit ich weiß, gibt es keine Speicherverluste, und an mindestens einer Stelle den code ausführen, für zwei Jahre unbeaufsichtigten, bevor der monitor auf dem PC fehlgeschlagen ist (wenn der PC war gut!).

Auf Windows habe ich verwendet Visual Leak Detector.Integriert mit VC++, einfach zu bedienen (nur eine Kopf-und set-LIB zu finden, die lib), open-source, frei zu verwenden FTW.

An der Universität, als ich Tat die meisten Dinge, die unter Unix Solaris I verwendet gdb.

Allerdings würde ich gehen mit valgrind unter Linux.

Der Urvater dieser tools ist das commercial, closed-source - Reinigen Werkzeug, das verkauft wurde, um IBM und dann UNICOM

Parasoft ' s Versichern++ (source code instrumentation) und valgrind (open source) sind die beiden anderen echten Konkurrenten.

Trivia:der ursprüngliche Autor von Reinigen, Reed Hastings, ging auf gefunden NetFlix.

Niemand erwähnt clang ist MSan, die ist ziemlich mächtig.Es ist offiziell unterstützt wird nur mit Linux, wenn.

Diese Frage ist vielleicht alt, aber ich Antworte es trotzdem - vielleicht meine Antwort wird jemandem helfen zu finden Ihre Speicher-Lecks.

Dies ist mein eigenes Projekt, habe ich es als open-source-code:

https://sourceforge.net/projects/diagnostic/

Windows 32-und 64-bit-Plattformen unterstützt, native-und mixed-mode zugehörigen Aufruflisten sind unterstützt.

.NET garbage collection wird nicht unterstützt.(C++ - cli ist gcnew oder C#'s new)

Es high-performance-tool und erfordert keine integration (es sei denn, Sie wirklich wollen, ihn zu integrieren).

Komplettes Handbuch finden Sie hier:

http://diagnostic.sourceforge.net/index.html

Scheuen Sie sich nicht, wie viel es tatsächlich erkennt Lecks es Ihren Prozess.Es fängt Speicherlecks aus dem ganzen Prozess.Analysieren Sie nur die größten Lecks, nicht alle.

Ich werde zweiten valgrind als externes tool für Speicherlecks.
Doch für die meisten der Probleme, die ich lösen musste, habe ich immer verwendet intern integrierten tools.Manchmal ist die externe tools haben zu viel Aufwand oder zu kompliziert sind, um set-up.

Warum verwenden bereits code geschrieben, wenn Sie können schreiben Sie Ihre eigenen :)

Ich Scherze, aber manchmal braucht man sowas einfach und es ist schneller zu schreiben es selbst.In der Regel ich nur ersetzen, ruft malloc() und free() Funktionen, die halten besser wer weist was.Die meisten meiner Probleme zu sein scheinen, jemanden vergessen zu befreien und dies hilft, dieses problem zu lösen.

Es hängt wirklich davon ab, wo das Leck ist, und wenn Sie wüssten, dass, dann würden Sie nicht benötigen keine Werkzeuge.Aber wenn Sie einen Einblick in das, wo du denkst, dass es undicht, dann setzen Sie in Ihrem eigenen Instrumentierung und sehen, ob es Ihnen hilft.

Unsere CheckPointer tool können dies für GNU-C-3/4, MS Dialekte von C, und GreenHills C.Sie können der Speicher-management-Probleme, Valgrind kann.

Wenn Sie Ihren code einfach Lecks, an der Ausfahrt CheckPointer sagen Ihnen, wo Sie alle unfreed memory zugeteilt wurde.

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