Ich verwende die Anleitung hier , um nach Speicher zu suchen Lecks in einer Win32-Anwendung. Wie beschrieben, stelle ich das
%Vor%Zeilen am Anfang einer Datei (die cpp-Datei, die WINAPI _tWinMain enthält) und dann am exit-Punkt von winmain habe ich
hinzugefügt %Vor%Leider sehe ich nicht die Zeilennummern / Stellen für die Lecks (aber ich bekomme eine Liste von Lecks).
Ich habe auch versucht,
zu setzen %Vor%am Anfang von Winmain - und wieder, kein Glück.
Ich finde das merkwürdig, weil ich normalerweise keine Probleme hatte, Lecks zu finden oder sie automatisch melden zu lassen.
Dies ist eine riesige, alte Legacy-App, an der ich für einen neuen Arbeitgeber arbeite. In der Vergangenheit habe ich mit dem Standard-VS-Assistenten gearbeitet.
Irgendwelche Vorschläge, wie man Quellenlinien / Methoden, die Lecks verursachen, bekommen kann? (oder zumindest die Zeilen für die "neuen" Anrufe?
BEARBEITEN:
Ich habe auch ein visuelles Lecksuchgerät ausprobiert - ohne Erfolg.
Sehr seltsam.
BEARBEITEN
Ich habe versucht, die Neudefinition von new wie unten aufgeführt zu verwenden, bekomme jedoch Fehler, wenn Boost kompiliert wird.
Sind Sie sicher, dass der Code, der leckt, die CRT-Debugzuweisungsroutinen verwendet? Das erfordert die Verwendung von malloc()
oder new
(im Gegensatz zu LocalAlloc
, GlobalAlloc
, einige benutzerdefinierte Blockzuordner, etc ..) und dass _DEBUG
(denke ich) muss definiert werden, wenn die CRT-Header enthalten waren.
Um Quellzeilen auf Lecks zu bekommen, müssen Sie DEBUG_NEW
überall, wo die Zuweisungen stattfinden. Dies liegt daran, dass, um sie zu verfolgen, jede Zuweisung durch einen Aufruf ersetzt werden muss, der __FILE__
und __LINE__
enthält. Die Standarddefinition des Assistenten sieht ungefähr so aus:
Dies behandelt malloc
nicht, es gibt wahrscheinlich eine ähnliche Beschwörungsformel dafür, wenn der Code, den Sie debuggen, malloc
anstelle von new
verwendet.
Wenn Sie vorkompilierte Header verwenden, können Sie dies einfach in die vorkompilierte Header-Datei einfügen, und dies wirkt sich auf alle Quelldateien in diesem Projekt aus.
Tags und Links memory-leaks c++ visual-studio-2008