Debugging: Definition

No featured image available

Der Begriff Debugging bezeichnet allgemein einen routinemäßigen Prozess in der Programmierung, um Fehler (Bugs) oder Anomalien in Programmen zu finden und zu beseitigen. Der Code wird mit Hilfe eines methodischen Vorgehens und geeigneter Werkzeuge überprüft. Die gefundenen Fehler werden lokalisiert, isoliert und korrigiert, so dass das Programm gemäß den festgelegten Spezifikationen funktioniert.

Das Debugging spielt bei der Softwareentwicklung eine wichtige Rolle. Softwareprogramme werden in einem mehrstufigen Prozess intensiven Tests unterzogen, aktualisiert, korrigiert und gewartet. Manchmal nimmt es genauso viel Zeit in Anspruch, die Software auf Fehler zu testen und diese zu beheben, wie den eigentlichen Code zu schreiben.

Debugging Prozess

Das Debugging selbst umfasst die Identifizierung der Ursache eines Fehlers und anschließend die Behebung des Fehlers. Dann wird überprüft, ob die Änderungen erfolgreich waren und der Fehler nicht mehr vorhanden ist. Dieser Prozess kann sowohl manuell als auch automatisiert mit Hilfe von Software-Debugging-Tools durchgeführt werden. Der Prozess umfasst z. B. die Suche nach Syntaxfehlern, semantischen Fehlern, Logikfehlern und Implementierungsfehlern.

Das Debugging erfolgt in der Regel in vier Schritten:

1

2

3

4

Identifizierung des Problems

Isolierung der Ursache

Fehlerbehebung oder Einrichtung einer Umgehungslösung

Testen der durchgeführten Maßnahmen

Es ist bekannt, dass beim Programmieren schon ein falsch verwendeter Operator oder eine falsch gesetzte Klammer ausreicht, um Programme so empfindlich zu stören, dass sie nicht mehr funktionieren. Die manuelle Suche in Tausenden von Codezeilen ist nicht nur mühsam und zeitaufwendig, sondern oft auch zum Scheitern verurteilt. Deshalb vereinfachen Entwickler den Debugging-Prozess durch Strategien wie Unit-Tests, Code-Reviews und Pair Programming.

Debugger-Funktionen

Debugger (Computerprogramme, die Fehler finden) sind in der Lage, genaue Angaben zu auftretenden Fehlern zu machen und in vielen Fällen auch die Codezeile zu finden, in der der Fehler auftritt. Dabei arbeiten sich die Debugger schrittweise durch den betroffenen Programmcode und definieren Haltepunkte, sogenannte Breakpoints.

Das Debugging-Tool erkennt die Breakpoints und kann die Software an den problematischen Stellen anhalten. Daraus ergeben sich für den Entwickler zwei Möglichkeiten:

  • Er kann das Programm ab dem betreffenden Breakpoint abspielen, um mögliche Fehlerquellen oder andere Probleme einzugrenzen.
  • Er kann den genauen Zustand des Programms zu diesem Zeitpunkt untersuchen. So kann er zum Beispiel überprüfen, ob die eingebundenen Variablen mit den erwarteten Werten übereinstimmen.

Debugger-Programme bieten grundlegende Funktionen wie Symbol-Resolver, Anfrageprozessor, Ausdrucksinterpreter und andere. In einigen Debugger-Programmen gibt es eine Funktion, die als Reverse Debugging bezeichnet wird. Diese ermöglicht es dem Benutzer, die Programmausführung in umgekehrter Richtung zu betrachten. Reverse Debugging wird nicht häufig verwendet, ist aber eine sehr nützliche Funktion.

Das Aufspüren von Fehlern erfordert ein hohes Maß an Erfahrung in der Programmierung. Hinzu kommt, dass Software immer komplexer wird, je weiter die digitalen Technologien voranschreiten. Außerdem arbeiten in Zeiten der agilen Softwareentwicklung immer mehr Entwickler an einem Softwareprodukt. Dadurch wird auch die Fehlerdiagnose erheblich erschwert.

Den Entwicklern steht also eine Reihe von Debugging-Tools für verschiedene Zwecke zur Verfügung, und es lohnt sich für jeden Entwickler, seine Erfahrungen mit diesen Tools ständig zu erweitern. Debugging ist in hohem Maße eine Kunst, da es nicht nur einen richtigen Weg gibt.