Erkennung von Speicherlecks mit LabWindows™/CVI

Inhalt

Einführung

Eine Stärke der Programmiersprache C ist die Möglichkeit, dass Entwickler Programmcode auf niedriger Ebene optimieren können.  Da die Programmiersprache C direkten Zugriff auf Anwendungsspeicher und hardwarespezifische Funktionsaufrufe bietet, sind Entwickler oft besser in der Lage, Programmgröße und Ausführungsgeschwindigkeit zu steuern.

Aber mit der Leistungsfähigkeit und Flexibilität von C ist auch die zusätzliche Komplexität der Speicherverwaltung verbunden, wie die vielen wissenschaftlichen Bücher zu diesem Thema zeigen.  In einem Buch wurde Folgendes erwähnt:

Die überwältigende Mehrheit der „Bugs“ und Abstürze resultiert aus Problemen hinsichtlich des Speicherzugriffs, der Speicherzuweisung oder der Speicherfreigabe. Solche speicherbezogenen Fehler sind bekanntermaßen schwer zu beheben ... Die meisten professionellen Programmierer kennen die Probleme, die sie verursachen, aus eigener Erfahrung.

Damit Entwickler Speicherlecks nicht erst nach der Bereitstellung ihrer Anwendungen erkennen, gibt es in LabWindows/CVI 9.0 jetzt ein Tool, das Fenster „Resource Tracking“, mit dem Entwickler Speicherlecks schon früher im Entwicklungsprozess erkennen und beheben können.

Überblick über das Fenster „Resource Tracking“

LabWindows/CVI bietet seit über einem Jahrzehnt eine automatische Überprüfung der Array-Grenzen, um Speicherfehler zu erkennen, die zu unerwartetem Verhalten führen können.  LabWindows/CVI umfasst nun ein integriertes Tool zum Auffinden potenzieller Ressourcenlecks, die die Systemleistung im Laufe der Zeit beeinträchtigen können. Damit baut die Software auf der Tradition der Bereitstellung fortschrittlicher Benutzerschutzfunktionen auf, die in C normalerweise nicht verfügbar sind.

Das neue Fenster „Resource Tracking“ (verfügbar in LabWindows/CVI Full Development System und Developer Suite) erfasst und verfolgt alle während der Ausführung zugewiesenen Ressourcen, zu denen beispielsweise dynamischer Speicher, Datei-Handles, Panels, GPIB/TCP-Handles und Thread-Pools gehören. Das Tool ermöglicht außerdem das einfache Wechseln zum Quellcode, das Anzeigen von Speicher, die Speicherfreigabe und die Protokollierung verfolgter Ressourcen zur späteren Überprüfung.

Wählen Sie Extended im Abschnitt Debugging Options des Dialogfelds Build Options aus, um die interaktive Ressourcenverfolgung zu aktivieren. Programmatisch können Sie die Ressourcenverfolgung auch mit den Funktionen „GetEnableResourceTracking“ und SetEnableResourceTracking in der Utility Library aktivieren und deaktivieren.

Verwenden des Fensters „Resource Tracking“

In der Spalte Resources im Fenster „Resource Tracking“ werden sowohl zugewiesene als auch freigegebene Ressourcen angezeigt, die Sie in Ihrem Programm zuweisen. In LabWindows/CVI werden neu zugewiesene Ressourcen mit rotem Text, vorhandene zugewiesene Ressourcen mit schwarzem Text und vor Kurzem freigegebene Ressourcen mit grauem Text angezeigt. Die Ressourcen sind auch abhängig vom Typ in Kategorien gruppiert, z. B. Speicher, Toolbox, Ressourcen der Benutzeroberfläche usw. Doppelklicken Sie auf eine Ressource in der Spalte Resources, um direkt zu der Stelle im Quellcode zu wechseln, an der die Ressource zugewiesen wurde. Im Abschnitt Stack Trace des Fensters „Resource Tracking“ wird der Aufrufstapel der Funktionen angezeigt, als die Ressource zugewiesen wurde. Dabei befindet sich die zuletzt aufgerufene Funktion oben und die Anfangsfunktion unten in der Liste.

Die Ressourcenverfolgung ist sowohl auf erweiterter als auch auf Standardebene für die Fehlersuche verfügbar. Mit der Option Extended im Abschnitt Debugging Options des Dialogfelds „Build Options“ wird per Standardeinstellung die Ressourcenverfolgung aktiviert. Wenn Sie Standard auswählen, müssen Sie die Funktion „SetEnableResourceTracking“ verwenden, um die Ressourcenverfolgung zu aktivieren.

Zur Anzeige des Fensters „Resource Tracking“ wählen Sie im aktiven LabWindows/CVI-Fenster die Optionen Window»Resource Tracking aus. Bei einem Rechtsklick auf die Spalte Resources im Fenster „Resource Tracking“ öffnet sich das Kontextmenü mit folgenden Optionen:

  • Go to Source – Hebt die Stelle im Fenster „Source“ hervor, an der die Ressource zugewiesen wurde.
  • View Memory – Öffnet das Fenster „Memory Display“ und zeigt den Speicherinhalt des ausgewählten Objekts an.
  • Break on Deallocation – Gibt an, dass LabWindows/CVI Ihr Programm anhält, wenn die Ressource freigegeben wird.
  • Show/Hide Thread IDs – Blendet die Spalte Thread-ID im Fenster „Resource Tracking“ ein oder aus.
  • Clear Window – Entfernt alle Objekte aus dem Fenster „Resource Tracking“.
  • Load from File – Lädt eine zuvor gespeicherte Datei.
  • Save to File – Speichert den aktuellen Inhalt des Fensters „Resource Tracking“ zur späteren Verwendung in einer Textdatei.
  • Sort – Öffnet das Dialogfeld „Sort Tree“, in dem Sie die Ressourcen im Fenster „Resource Tracking“ sortieren können.
  • Find – Öffnet das Dialogfeld „Find“, in dem Sie nach Text in der Spalte suchen können.
  • Expand Resource – Erweitert die Ressourcenkategorie.
  • Collapse Resource – Blendet die Ressourcenkategorie aus.
  • Expand All – Erweitert alle Ressourcenkategorien.
  • Collapse All – Blendet alle Ressourcenkategorien aus.
  • Release Window/Confine Window – Abhängig davon, ob sich das Fenster „Resource Tracking“ im Fenstergrenzbereich befindet, werden in LabWindows/CVI unterschiedliche Optionen angezeigt. Mit dem Befehl Release Window wird das Fenster aus dem Fenstergrenzbereich entfernt. Mit dem Befehl Confine Window wird das Fenster auf den Fenstergrenzbereich begrenzt.

Durch einen Rechtsklick auf den Abschnitt Stack Trace im Fenster „Resource Tracking“ wird das Kontextmenü mit folgenden Optionen geöffnet:

  • Go to Source – Hebt die Stelle der ausgewählten Funktion im Fenster „Source“ hervor.
  • Find – Öffnet das Dialogfeld „Find“, in dem Sie nach Text in der Spalte suchen können.

Bei einem Rechtsklick auf die Registerkarte des Fensters „Resource Tracking“ öffnet sich das Kontextmenü mit folgenden Optionen:

  • Close – Schließt das Fenster.
  • Release Window – Entfernt das Fenster aus dem Fehlersuchbereich.

Da die Verfolgung von Ressourcen zusätzlichen Overhead verursacht, beeinträchtigt die Aktivierung der Ressourcenverfolgung die Leistung Ihres Programms.

Zusätzliche Ressourcen

Evaluierung von LabWindows/CVI

LabWindows/CVI – Dokumentation

Für die Verwendung der Marke LabWindows wurde eine Lizenz bei der Microsoft Corporation eingeholt. Windows ist ein in den USA und anderen Ländern eingetragenes Warenzeichen der Microsoft Corporation.

Was this information helpful?

Yes

No