2009-06-05 2 views
1

Ich bin auf der Suche nach einem Tool, das eine laufende Anwendung (Win32/COM) für eine lange Dauer (1-3 Tage) überwachen und Speicherlecks erkennen kann, falls vorhanden. Irgendwelche Vorschläge? Es ist eine .NET Windows-Anwendung, die viel nicht verwalteten Code aufruft.Welches ist das beste Tool zum Testen auf Speicherverlust in Win32/COM-Anwendung?

+0

Suchen Sie nach Speicherverlusten im nicht gemanagten Code oder suchen Sie nach Speicherlecks in der .Net-Anwendung (undichte Ressourcen - nicht ordnungsgemäß entsorgen usw.)? – RobS

+0

Ich suche nach beiden, aber meistens in nicht verwaltetem Code. – devnull

Antwort

0

AQTime schön, ich habe es mehrfach verwendet und es half mir mit ein paar knifflige Bugs.

0

Ich habe Bounds Checker verwendet, aber heutzutage benutze ich entweder das eingebaute Micsoft CRT library oder baue mein eigenes.

0

Wenn Sie nach einem Pay $ s Werkzeug suchen, dann lohnt sich die Verwendung von DevPartner. Es verfügt über Speicherleckerkennung für verwalteten und nicht verwalteten Code.

0

Application Verifier ist kostenlos und von Microsoft. Es erkennt Speicherlecks, doppelte Freigaben, überschreibt und viele andere Dinge. Ich benutze es die ganze Zeit und es hat mir geholfen, einige unangenehme Probleme aufzuspüren.

1

iJeeves, die Kombination aus BoundsChecker und .NET-Speicherprofilierung sollte Ihnen bei der Speicheranalyse helfen. DevPartner Studio 10.5 wird am 4. Februar 2011 mit 64-Bit-Anwendungsunterstützung ausgeliefert. Abhängig von der Speicherauslastung Ihres Anwendungsspeichers können Sie x86-Buildkonfigurationen mit der Fehlererkennungsspeicherverfolgungsanalyse ausführen, solange Sie unter der globalen Gesamtprozessadresse von 2 GB bleiben, 3 GB, wenn Sie die EXE mit LARGE_ADDRESS_AWARE verknüpfen und auf einem x64-Betriebssystem ausführen zusätzlicher Arbeitsspeicher Die x64-Build-Konfiguration lässt Sie so hoch gehen, wie es Ihr System-RAM erlaubt, zumindest bis Sie mit dem Paging beginnen und die Leistung zum Stillstand kommt. Sie können eine BC-Fehlerkorrektur für Ihren systemeigenen Code im .NET-Prozess ausführen, aber Objektlecks oder gehaltene Referenzen in verwaltetem Code erfordern einen zweiten Durchlauf mit dem .NET-Speicherprofiler. Wir haben noch keine Single-Pass-Analyse, die gemischten C++ - und .NET-Code mit vollen gemischten Stack-Traces verarbeiten kann, aber verwalteter Code oberhalb der Linie, alle PInvokes, die die Linie kreuzen, und alle nativen Aktivitäten unterhalb der Linie in zwei geht vorbei. Schamloser Stecker: Ich arbeite im DevPartner-Team. Die oben genannten Links zu microfocus.com führen zu DevPartner-Seiten. Suchen Sie nach DPS 10.5, wenn es ausgeliefert wird, und ziehen Sie das Eval herunter, um zu sehen, ob es Ihren Anforderungen entspricht.