Eine Stärke der C-Programmierung liegt darin, dass Anwender ihren Code hardwarenah optimieren können. Da C direkten Zugriff auf den Anwendungsspeicher und hardwarespezifische Funktionsaufrufe bietet, haben Entwickler eine bessere Kontrolle über den Programmumfang und die Ausführungsgeschwindigkeit.
Allerdings bringen Leistung und Flexibilität der Programmiersprache C eine komplexere Speicherverwaltung mit sich. Dies wird in vielen Lehrbüchern besprochen. In einem dieser Bücher heißt es:
„Die überwältigende Mehrheit an ‘Bugs’ und Abstürzen resultiert aus Problemen wie Speicherzugriffen sowie Speicherzuweisungen und -freigaben. Diese speicherbezogenen Fehler sind seit jeher schwierig zu lösen … Die meisten professionellen Programmierer erfahren erst durch die deswegen auftretenden Fehler von diesen Problemen.“
Seit LabWindows/CVI 9.0 steht mit dem Resource Tracking Window ein Tool zur Identifizierung und Behebung von Speicherlecks zur Verfügung, um frühzeitig im Entwicklungsprozess Probleme zu erkennen, noch bevor die Anwendung ausgeliefert wird.
Seit mehr als zehn Jahren bietet LabWindows/CVI Funktionen zur automatischen Überprüfung von Array-Grenzen, um Speicherfehler zu vermeiden, die zu unerwartetem Verhalten führen können. LabWindows/CVI bietet User-Protection-Funktionen, die in der Regel nicht in C verfügbar sind, wie z. B. ein integriertes Tool zur Erkennung potenzieller Ressourcenlecks, die zu einem Leistungsverlust des Systems führen können.
Das neue Fenster zur Ressourcenüberprüfung (verfügbar im LabWindows/CVI Full Development System und in der NI Developer Suite) sorgt für die Aufzeichnung und Überprüfung aller zur Laufzeit allokierten Ressourcen u. a. dynamische Speicher, Datei- und Panel-Handles, GPIB/TCP-Handles und Thread-Pools. Des Weiteren ermöglicht das Tool die Anzeige des Quellcodes und Speichers, das Anhalten der Anwendung, wann und wo Ressourcen allokiert bzw. freigegeben werden und die Aufzeichnung dieser Informationen auf einem Datenträger zur späteren Überprüfung.
Wählen Sie im Dialogfeld Build Options den Punkt Debugging Options und dann Extended, um die interaktive Ressourcenüberprüfung zu aktivieren. Sie können die Ressourcenüberprüfung auch programmatisch über die Funktionen GetEnableResourceTracking und SetEnableResourceTracking aus der Utility-Bibliothek aktivieren und deaktivieren.
Die Spalte Ressourcen des Resource Tracking Window zeigt sowohl allokierte als auch wieder freigegebene Ressourcen, die in einem Programm zugewiesen werden. LabWindows/CVI zeigt neu zugewiesene Ressourcen mit rotem Text, bestehende zugewiesene Ressourcen in schwarzem und vor kurzem freigegebene Ressourcen in grauem Text an. Darüber hinaus sind die Ressourcen auch nach Kategorien gruppiert, geordnet z. B. nach Speicher, Toolbox, Ressourcen für Benutzeroberflächen usw. Nach einem Doppelklick in die Spalte Resources kann man direkt in die Zeile des Quellcodes navigieren, wo die Ressourcen zugewiesen wurden. Der Abschnitt Stack Trace im Resource Tracking Window zeigt die Reihenfolge der Funktionen (Call Stack), denen Ressourcen zugewiesen wurden. Dabei steht die zuletzt aufgerufene Funktion am Anfang und die ursprüngliche Funktion am Ende der Liste.
Das Resource Tracking, also die Ressourcenüberprüfung, steht für die Debugging Options Standard und Extended zur Verfügung. Das Resource Tracking wird im Dialogfeld Build Options unter Debugging Options und Extended aktiviert. Wird dann Standard ausgewählt, muss das Resource Tracking mit der Funktion SetEnableResourceTracking aktiviert werden. Um das Resource-Tracking-Fenster sichtbar zu machen, wird im aktiven LabWindows/CVI-Fenster Window»Resource Tracking gewählt. Ein Klick mit der rechten Maustaste auf die Spalte Ressourcen des Fensters Resource Tracking öffnet ein Kontextmenü mit folgenden Optionen:
Um das Resource-Tracking-Fenster sichtbar zu machen, wird im aktiven LabWindows/CVI-Fenster Window»Resource Tracking gewählt. Ein Klick mit der rechten Maustaste auf die Spalte Ressourcen des Fensters Resource Tracking öffnet ein Kontextmenü mit folgenden Optionen:
Ein Klick mit der rechten Maustaste auf den Abschnitt Stack Trace des Fensters Resource Tracking öffnet ein Kontextmenü mit folgenden Optionen:
Ein Klick mit der rechten Maustaste auf den Reiter des Fensters Resource Tracking öffnet ein Kontextmenü mit folgenden Optionen:
Da die Überprüfung von Ressourcen zusätzlichen Overhead verursacht, kann das Resource Tracking die Leistung des Programms beeinflussen.
Evaluierung von LabWindows/CVI
Newsletter für LabWindows/CVI-Entwickler
Abonnieren Sie den vierteljährlich erscheinenden Newsletter – informieren Sie sich mithilfe von Tutorien, profitieren Sie von Tipps und Tricks und schlagen Sie selbst Themen für die nächsten Ausgaben vor.