English:
English version







FindLeak 5.0 Demo-Workshop

Im Folgenden soll das Arbeiten und die Funktionen von FindLeak mit der FindLeak- Demo-Version veranschaulicht werden. In diesem Beispiel wird Speicher allokiert und nicht wieder freigegeben.

Dies ist nur einer von vielen Anwendungsfällen, bei denen der Einsatz von FindLeak Sinn macht.

 

Starten Sie FindLeak.

Starten Sie die zu überwachende Anwendung. Als Beispiel verwenden wir hierzu die mitgelieferte Beispielanwendung "FindLeakDemo", innerhalb der wir links (in der Kategorie "Leak samples") den Button "AllocSysString" anklicken. In unserem Beispiel wird daraufhin Speicher belegt, der anschließend nicht wieder freigegeben wird. Unser Ziel ist es nun, dieses Ressourcenleck nachzuweisen und auf eine einfache Art und Weise zu lokalisieren.

   
 

   
Die gestartete Anwendung ist nun in FindLeak zu sehen. Nach dem Expandieren der TreeView-Darstellung sind auf der rechten Seite die momentan von der Anwendung belegten Speicherressourcen für Heap, Memory und GDI zu sehen.
   
 

   
Damit neue Speicherallokierungen angezeigt werden können, markieren Sie in FindLeak Ihre Anwendung und klicken Sie dann mit der rechten Maustaste, damit sich das Kontextmenü öffnet. Hier wählen Sie bitte "Neue Allokierungen markieren" aus.
   
 

   
Wir führen den fehlerhaften Code erneut aus, indem wir in unserem Beispielprojekt wieder links auf "AllocSysString" klicken.
 

 

Anschließend selektieren Sie bitte in der TreeView-Darstellung von FindLeak wieder den Eintrag "FindLeakDemo" und wählen hier "Heap" aus. In der Tabellenansicht auf der rechten Seite sind nun neue Einträge erschienen, die mit dem Präfix "01" vor "Num..." beginnen. Diese Einträge stehen für die in diesem Durchgang neu belegten Speicherplätze.
   
 

   
   
Um weitere Speicherallokierungen durch erneutes Ausführen des fehlerhaften Codes zu demonstrieren, markieren Sie Ihre Anwendung in FindLeak erneut mit "Neue Allokierungen markieren" und klicken danach in der Demoanwendung nochmals auf "AllocSysString" (auf der linken Seite).
 

 

Es erscheinen weitere neue Einträge für Speicherbelegungen, die jetzt mit "02" vor "Num..." beginnen. Diese stehen für die beim zweiten Durchgang neu hinzugekommenen Allokierungen.
 

 

 

   
   
Wiederholen Sie diese Schritte noch einige Male. Sie sehen, dass bei jedem Durchgang eine bestimmte Menge Speicher allokiert und nicht wieder freigegeben wird. In all diesen Fällen wird in der Tabellenspalte "Breakpoint" auf denselben Wert verwiesen. Sie haben jetzt den Nachweis erbracht, dass diese Anwendung allokierten Speicher nicht vollständig zurückgibt und haben eine Stelle im Programmcode gefunden, an der dieser Speicher nicht wieder zurückgegeben wird.
 

 

Um an dieser Stelle später zu debuggen, setzen Sie in FindLeak einen Breakpoint. Hierzu markieren Sie einen der Einträge, die in der Spalte "Breakpoint" auf denselben Wert verweisen. Im Kontextmenü wählen Sie nun "Anhalten bei Allokierung" aus.
 

 

 

 

 

Das Symbol vor "Heap" in der TreeView-Ansicht verwandelt sich daraufhin in einen roten Blitz. Vor allen Einträgen in der Listenansicht im rechten Teil des FindLeak-Fensters, die auf dieselbe Speicherstelle verweisen, erscheint nun ebenfalls ein roter Blitz. Das Blitz-Symbol wird innerhalb von FindLeak verwendet, um einen Breakpoint darzustellen.
 

 

 

 

 

Abschließend selektieren Sie in der TreeView Ihre Anwendung und klicken im Kontextmenü auf den Eintrag "Debugger starten". Daraufhin wird der Debugger Ihrer Entwicklungsumgebung gestartet.
 

 

 

 

 

Wenn Sie den kritischen Programmcode jetzt ein weiteres Mal ausführen, wird das Programm an der markierten Stelle angehalten. Nun haben Sie die Möglichkeit, die gefundene Fehlerstelle im Debugger näher zu analysieren.
 

 

Sie haben nun gesehen, wie man mit Hilfe von FindLeak in kurzer Zeit sehr einfach ein Memory Leak lokalisieren kann. Wenn Sie jetzt neugierig darauf sind, das Ganze einmal selbst auszuprobieren und kennenzulernen, dann laden Sie doch einfach die kostenlose Demoversion von FindLeak herunter, die u.a. auch das hier vorgestellte Beispielprojekt enthält.
   

Startseite | Funktionen | Neues | Download | FAQ | Bestellen | Allgemeine Geschäftsbedingungen | Impressum

Verantwortlich für den Inhalt dieser Website: cjt Systemsoftware AG
Copyright © 2007