Suchen und Finden
Service
Infos und Kontakt
14 Fehlersuche (S. 239-240)
Grundsätzlich sollten alle konstruktiven und vorbeugenden Maßnahmen zur Verhinderung und zur frühen Erkennung von Fehlern getroffen werden, beispielsweise die Ausführung von Zusicherungen während der Entwicklung und des Testens. Dennoch kann es vorkommen, dass ein Programm Fehler erzeugt, deren Ursachen und Auswirkungen allein aufgrund eingestreuter Ausgaben und Fehlermeldungen nicht ohne weiteres nachvollziehbar sind.
In diesem Fall kann der Einsatz eines fensterbasierten interaktiven Programms zur Fehlersuche, eines sogenannten Debuggers, äußerst hilfreich sein. Bisher wurden häufig konstruktive Maßnahmen zur Verhinderung von Fehlern und vorbeugende Maßnahmen zur frühzeitigen Entdeckung von Fehlern vorgestellt. Insbesondere die Verwendung geeigneter Zusicherungen (siehe die Beschreibung des assert- Makros im Wissensbaustein »Vordefinierte Makros«, S. 142) und deren Ausführung während der Entwicklung und des Testens ist hier von Bedeutung. Dennoch kann ein Programm ein Fehlverhalten zeigen, dessen Ursache und Verlauf aufgrund der Fehlermeldungen und auch zusätzlich eingestreuter Ausgaben (siehe zum Beispiel das NDEBUG-Makro im Wissensbaustein »Bedingte Kompilierung«, S. 129) nicht unmittelbar verständlich sind. Für solche Fälle empfiehlt sich der Einsatz eines interaktiven Programms zur Fehlersuche, eines sogenannten Debuggers. Die ersten Debugger waren kommandozeilenbasierte Werkzeu- ge, zum Beispiel der GNU Debugger. Diese wurden später durch fensterbasierte Debugger ergänzt. Ein Debugger erlaubt die interaktive und schrittweise Abarbeitung eines Programms, wobei in einem eigenen Fenster der Quelltext, der zur gerade ausgeführten Anweisung gehört, angezeigt wird. Ein Debugger verfügt über folgende Grundfunktionen:
- Schrittweise Abarbeitung der Anweisungen eines Programms
- Setzen von Haltepunkten
- Überwachung von Variablen
- Änderung der Werte von Variablen
- Anzeige des Aufrufstapels
- Disassemblierung des ausgeführten Binärcodes
Zur Erinnerung sei angemerkt, dass die meisten Debugger keine Makros verarbeiten, das heißt expandieren können (siehe Wissensbaustein »Gefahren und Fallstricke«, S. 148). Für Cygwin-C++ stehen der kommandozeilenbasierte Debugger GDB und Insight, ein fensterbasierter Aufsatz für GDB, zur Verfügung. Die Entwicklungsumgebung Visual Studio 6.0 und neuere Versionen enthalten alle einen integrierten Debugger.
Ältere Versionen von Dev-C++ verfügen lediglich über GDB. Insight kann nachträglich installiert werden. Suchen Sie im World Wide Web zu diesem Zweck nach einem rund 2,5 Megabyte großem Archiv namens insight_win32.zip und entpacken Sie seinen Inhalt in das Installationsverzeichnis von Dev-C++. Neuere Versionen von Dev-C++ verfügen über einen eigenen integrierten fensterbasierten Aufsatz für GDB, der zusammen mit Dev-C++ installiert wird. Im Wissensbaustein »Debugging mit Insight«, S. 242, wird erklärt, wie Sie die oben genannten Debugging-Funktionen mit Insight nutzen.
Das Debuggen mit Visual Studio und Dev-C++ wird ausführlich im kostenlosen E-Learning-Kurs zum Buch behandelt. Sie sollten die Debugging-Sitzungen anhand des Programms »Kombinatorik« während der Bearbeitung des Wissensbausteins nachvollziehen. Dieses implementiert bekannte Funktionen aus der Kombinatorik und ruft sie mit vom Anwender eingegebenen Werten auf.
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion




















