Debugging

Copyright © Shutterstock/ Dusit srisory
Inhaltsverzeichnis
Was bedeutet Debugging?
Definiton
Debugging bezeichnet in der Software-Entwicklung den Prozess des Auffindens und Behebens von Fehlern. Ein Fehler wird in der englischen Sprache auch als “Bug” bezeichnet. Viele Compiler verfügen über einen eigenen Debugger, der bei der Diagnostik von Programmfehlern hilft.
Lange Zeit wurde vermutet, die Begriffe “Bug” und “Debugging” gingen auf die amerikanische Informatikerin und Flottenadmiralin Grace Hopper zurück. Als eine Motte im Relais eines Mark II Computers steckenblieb, bezeichnete Hopper die Wartungsarbeiten als “Debugging”. Mit Bug wird in der englischen Sprache nicht nur ein technischer Fehler bezeichnet, sondern auch ein Insekt. Allerdings gehen Etymologen heute davon aus, dass der Begriff “Bug” bereits im 19. Jahrhundert verwendet wurde und auf den Erfinder Thomas Edison zurückzuführen ist.
Bei einfachen Fehlern weist eine moderne Entwicklungsumgebung (IDE) den Programmierer schon kurz nach der Eingabe des fehlerhaften Codes auf den diagnostizierten Fehler hin. Die problematische Stelle wird dann mit einer roten Linie unterstrichen. In der Regel handelt es sich hierbei um sehr einfache Bugs, wie etwa einen syntaktischen oder lexikalischen Fehler. Diese Fehlertypen können in Sekundenschnelle behoben werden. Bei einem syntaktischen Fehler etwa durch das Hinzufügen eines Semikolon am Ende einer Zeile. Auch beim Kompilieren des Programms werden alle Fehlerstellen gesammelt. In der Debugging-Konsole findet man dann den jeweiligen Programmabschnitt und die entsprechende Zeilennummer.
Schwerwiegender sind hingegen Laufzeitfehler (Runtime Error), die erst nach dem Ausführen des Programms auftreten. Diese können dazu führen, dass sich das Programm unerwartet verhält oder sogar ganz abstürzt. Um diese aufzufinden, muss der Programmierer einen sogenannten Breakpoint in der Zeile setzen, in der er das Auftreten des Fehlers vermutet. Der Programmablauf wird an dieser Stelle angehalten. Anschließend kann der Programmierer durch jeden Programmschritt gehen und erhält vom Debugger weitere Informationen. Nachdem der Bug beseitigt wurde, wird das Programm noch einmal neu kompiliert. Alle Dateien des Programms werden aktualisiert. Diese Aktualisierung des Programms, die sich nur auf die Fehlerbeseitigung konzentriert, nennt man auch Patch. Dieser ist von einem Update zu unterscheiden, das neue Inhalte zum Programm hinzufügt.
Die Steuerung des Debugging
Zum Debugging gehört das Austesten des Programmablaufs. Schwerwiegende Fehler treten erst nach der Programmausführung auf. Mit Hilfe eines Debuggers kann das Programm Schritt für Schritt überprüft werden. Es bieten sich für den Programmierer verschiedene Steuerungsmöglichkeiten an. In den meisten Entwicklungsumgebungen geschieht dies über eine eigene Debugging-Konsole.
- Der Watchpoint ist ein Überwachungspunkt, bei dem die Werte von Variablen während der Programmausführung beobachtet werden können. Im Unterschied zu einem Breakpoint sind sie nicht an eine feste Stelle geknüpft, sondern werden durchweg während des gesamten Ablaufs überwacht.
- Der Breakpoint ist ein Haltepunkt, der vom Programmierer bewusst an einer bestimmten Stelle des Programms gesetzt wird. Das Programm wird anschließend an der Stelle unterbrochen und der Programmierer kann Schritt für Schritt durch den weiteren Ablauf des Programms gehen. Dies ist sehr sinnvoll, wenn man beobachten möchte, ob etwa logische Statements korrekt ausgeführt werden oder um zu sehen, wie Speicheradressen beschrieben werden.
- Mit Tracepoint bezeichnet man einen Verfolgungspunkt, der eine festgelegte Aktion auslöst, sobald der Punkt im Programmablauf erreicht wird.
Draw Debugging
In 3D-Engines wie etwa Unreal oder Unity gibt es außerdem die Möglichkeit, dass ein 3D-Objekt, etwa eine Gitternetz-Kugel oder eine Linie, gezeichnet werden können. Ein Beispiel hierfür wäre etwa, wenn man überprüfen möchte, ob eine Sichtlinie zwischen zwei Objekten besteht und sich die Objekte sehen können. Trifft dies zu, so wird eine Debug-Kugel an der Stelle gezeichnet (Drawing), an der das betrachtete Objekt zuletzt gesehen wurde.
Die verschiedenen Fehlertypen
Methoden
Sie haben noch Fragen?