Delta Debugging (auch Δ-Debugging oder kurz DD) automatisiert die Methode zur Suche nach Fehlerursachen in Programmen nach dem Versuch-und-Irrtum-Prinzip. Auch beim manuellen Debugging wird dieses Prinzip eingesetzt. Ein DD-Algorithmus automatisiert die Aufstellung der Hypothese, die Definition der erforderlichen Parameter, den Programmaufruf und die Auswertung des Programmverhaltens. Durch die Anwendung von DD kann die gesamte Kausalkette isoliert werden, die zu einem Fehler oder allgemeiner zu einem bestimmten Programmverhalten führt.
Entwickelt wurde DD von Andreas Zeller am Lehrstuhl für Softwaretechnik der Universität des Saarlandes.
Vorgehensweise
Der Algorithmus lokalisiert den Übergang zwischen dem letzten Programmschritt im zu analysierenden Programm, bei dem der Fehler noch nicht auftritt und den ersten Programmschritt, bei dem der Fehler sichtbar wird Innerhalb dieses Übergangs werden alle Parameter und alle enthaltenen Programmschritte eingesammelt. Jeder enthaltene Programmschritt wird, sowohl im fehlerfreien Zustand als auch im fehlerhaften Zustand, mit allen erforderlichen Parametern aufgerufen. Der erste Programmschritt, der eine Verhaltensänderung zeigt, beschreibt den nächsten Übergang. Innerhalb des aktuellen Programmschrittes wird der Ist-Zustand gespeichert und erneut eine Analyse wie in Punkt 2 unter Berücksichtigung sämtlicher Parameter durchgeführt. Der Algorithmus hat die auslösende Stelle lokalisiert, wenn es keine weiteren Programmschritte innerhalb des aktuellen Programmschrittes gibt, oder wenn keiner dieser Schritte eine Änderung des Verhaltens bewirkt.
Durch den beschriebenen Ablauf wird automatisch eine Kausalkette erstellt, die zum gesuchten Fehler im Programm führt.
Abgeleitete Entwicklungen
Durch eine Erweiterung von DD um eine Wiederherstellungsfunktion für interne Abhängigkeiten entsteht DRReduce. DD bildet die Basis für die Analyse von LLMs durch DDOR.
Weblinks Delta Debugging project at Software Engineering Chair, Saarland University Seminar: Qualitätssicherung in der Softwareentwicklung, Uni-Münster Interview mit Andreas Zeller über Delta Debugging
Einzelnachweise
Kategorie:Fehlermanagement (Softwaretechnik)