2011-01-14 12 views
4

Gibt es ein Tool, das mir helfen, Heap-Beschädigung in C++ zu erkennen? Ich kann keinen Quellcode bereitstellen, weil es ein großes Projekt ist. Ich kann jedes Werkzeug verwenden, das mit Visual Studio oder mit xcode arbeitet. Das Tool sollte mit Multithreading gut funktionieren. Das Problem ist nicht sehr häufig, es erscheint nach einer langen Zeit und nur in sehr speziellen Fällen (sie wurden nicht genau erkannt!).Heap Korruptionserkennung Tool für C++

Vielen Dank!

EDIT:

Vielen Dank für Ihre Antworten! Ich werde die Tools testen und nach den Tests werde ich eine Antwort akzeptieren.

+1

Unter welchen Bedingungen Sie das Heapbeschädigung erkannt werden soll? Können Sie den Prozess unter einem Debugger ausführen? Debuggen oder Releasebuild? Entwickler oder Produktionsmaschine? –

+0

Ich kann den Prozess im Debug-Modus ausführen, ich habe den Quellcode, ich kann es auf dem PC/MAC/iPhone/iPad (99% des Codes, einige kleine Initialisierung Teil ist anders und einige OS spezifische Teile, aber das Problem ist in allen Builds, also muss es von gemeinsamen Teilen sein) – Felics

Antwort

8

Valgrind ist das defacto Tool für Speicher-Instrumentierung für systemeigenen Code. Es läuft jedoch nicht unter Windows (OS X ist in Ordnung).

Es gibt ein paar kommerzielle Tools, die unter Windows laufen, und während sie eine GUI haben, sind meiner Meinung nach schlechter als Valgrind.

+0

Beachten Sie, dass nur die neuesten Valgrind-Versionen OSX unterstützen. – ismail

+1

Hinweis: Valgrind ist das Kernwerkzeug und kommt mit mehreren Plugins. Plugins verfügen in der Regel über eine grafische Benutzeroberfläche, um die generierte ausführliche Ausgabedatei sinnvoll zu machen. –