2010-12-20 19 views
0

Ich arbeite an einem Programm, von dem ich vermute, dass es einen oder mehrere Speicherlecks gibt. Eine andere Antwort auf Stack Overflow sagte mir, ich solle DevPartner BoundsChecker ausprobieren (eine von vielen anderen, die ich ausprobiert habe).DevPartner BoundsChecker bricht mein Programm

Jetzt, wenn ich mein Programm laufen mit BoundsChecker läuft, wird es brechen. Irgendwann wird ein Windows-Datei-Öffnen-Dialog initiiert und kurz bevor das tatsächlich passiert, wird ein nicht-fortsetzbarer Breakpoint ausgelöst. Dies geschieht nur, wenn BoundsChecker ausgeführt wird.

Laut der Konsolenausgabe ist das letzte, was das Programm versucht, zu laden C:\Windows\SysWOW64\slc.dll, die DevPartner als "Microsoft Software Licensing Client Dll" erkennt. Da wir in diesem speziellen Programm keine Softwarelizenzierung verwenden, muss dies irgendwie mit dem zu öffnenden Dialogfenster zusammenhängen.

Wie auch immer, ich möchte diese Speicherlecks wirklich finden und dafür muss ich diese Datei öffnen. Gibt es eine Möglichkeit zu sagen, dass BoundsChecker aufgrund dieses Problems mein Programm nicht bricht (was auch immer das Problem sein mag)?

+1

Nicht wirklich eine Antwort auf Ihre Frage, aber eine alternative Methode: Das SysInternals VMMap-Tool ist relativ unbekannt, aber es hat die Fähigkeit, Stack-Traces anzuzeigen, tatsächlich sehr nützlich zum Aufspüren vieler Arten von Speicherlecks. Ich habe eine kurze Anleitung über die Verwendung hier geschrieben, falls es nützlich ist (auf ein anderes Publikum ausgerichtet, aber die meisten Details gelten für jede Speicherlecksuche): http://resource.dopus.com/viewtopic.php?f=11&t = 13046 - Ich hoffe, es ist nützlich und tut mir leid, wenn nicht! (Edit: Direktlink zu VMMap: http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx) –

+0

Ich sollte hinzufügen, es kann fiddly sein, um VMMap Ihre Debug-Symbole zu sehen, aber sobald es es tut kann Ihnen die Codezeile mitteilen, die die Zuordnung ausgelöst hat. (Nun, nicht die Codezeile, sondern die Codezeilen im Code-Stack.) –

+1

Sie können das Speichern von visuellem Studio-Speicherleck aktivieren. Es ist nicht so leistungsfähig wie boundschecker, aber Sie können es jederzeit im Debug-Build eingeschaltet lassen: http://msdn.microsoft.com/en-us/library/e5ewb1h3(v=vs.80).aspx –

Antwort

1

Basti, es gab einen bekannten Fehler in den 9.x-Versionen von BoundsChecker mit der MFC-Datei öffnen Eingabeaufforderung. Wenn Sie Ihre DPS- und Visual Studio-Versionen veröffentlichen, kann ich Ihnen möglicherweise mitteilen, mit welchem ​​Patch oder Update Sie dies umgehen müssen. Auf der anderen Seite, wenn Sie wirklich in einer Lizenzierungs-Wächter-DLL stolpern, kann BoundsChecker eine Anti-Tamper-Logik darin aufregen. Ich habe gesehen, dass DPS die Manipulationssicherheitslogik in anderen Micro Focus-Produkten erhöht hat. Wenn es Letzteres ist, müssten Sie einen Fall mit der Kundenbetreuung von Micro Focus ansprechen und ein Repro-Testmuster bereitstellen. Schamloser Stecker: Ich arbeite im DevPartner-Team. Wir veröffentlichen DPS 10.5 mit BoundsChecker für x64-Anwendungsunterstützung am 4. Februar 2011. Bitte prüfen Sie, ob diese Version Ihr Problem korrigiert, sobald die Download-Bewertung veröffentlicht wurde.

+0

Wird tun. Vielen Dank! – bastibe

+0

Hallo Matt, Ich habe das gleiche Problem. Es ist ärgerlich, BoundsChecker gekauft zu haben, um Lecks in unserem Produkt zu finden. Meine App läuft im VS-Debugger einwandfrei, stürzt aber beim Ausführen unter BoundsChecker-Fehlererkennung ab. Es stürzt beim Laden der DLLs direkt beim Start der App ab. Ich habe das mit Version 10.5 überprüft. Ich bin auf Windows 7 64bit, VS C++ 2010, 32-Bit-Anwendung. Es lädt 5 unserer dlls, der Absturz tritt auf, wenn ntdll.dll versucht, den 6. zu laden. Irgendwie kommt das Programm in den Start von normaliz.dll und stürzt mit einem ungültigen Zeiger ab. Prost –

Verwandte Themen