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)?
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) –
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.) –
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 –