High five! Frisch im neuen Semester geht es wieder weiter in Runde fünf unserer Reihe zu dem Programm Matlab. Die letzte Ausgabe hat sich mit der speziellen Datenstruktur der sparse-Matrizen beschäftigt, die Berechnungen effizienter machen. In unserem Online-Magazin gibt es die anderen Teile der Reihe auch zum Nachlesen. Dieses Mal soll ein Tool vorgestellt werden, das bei der Fehlersuche im Code und beim Nachvollziehen von fremdem Code sehr hilfreich sein kann: die Breakpoints.

Im seltensten Falle kommt beim ersten Start des frisch geschriebenen Programms das gewünschte Ergebnis. Irgendwo haben sich immer Fehler eingeschlichen und nicht immer sind die ausgegebenen Fehlermeldungen ausreichend erklärend. Naive Herangehensweisen „einfach“ den Code durchzuschauen und auf Fehler abzusuchen sind insbesondere bei längeren Problemen kaum praktikabel und auch nicht immer zielführend, da einige Probleme nicht auf den ersten Blick erkennbar sind.

Matlab bietet einige Möglichkeiten, dieser Sache Herr zu werden. Die sogenannten Breakpoints sind eine einfache und mächtige Option. Mit einem Klick auf die kleinen Striche rechts neben den Code-Zeilennummern lassen sich die kleinen roten Punkte setzen und wieder entfernen. Wird das Programm bei gesetztem Breakpoint gestartet, so startet es im Debug-Modus und läuft genau bis zu dieser Stelle und hält an.

Praktisch ist nun, dass der gesamte Inhalt des Programms „eingefroren“ ist. Insbesondere gilt dies für alle (temporären) Variablen, Arrays und Matrizen. Über das Variablen-Fenster oder durch die Eingabe im Konsolen-Fenster kann auf diesen gearbeitet werden, also auch der aktuelle Inhalt abgefragt werden. Im Konsolen-Fenster ist der Modus durch ein K vor dem >> zu erkennen. Wichtig: alle Berechnungen während des Debuggings werden nur temporär gespeichert und sind danach nicht mehr vorhanden.

Über spezielle Steuerungstasten kann man das Programm weiter kontrolliert ablaufen lassen. In der Debug-Befehlsgruppe, die erscheint, sobald ein Programm im Debug-Modus ist, sind diese gesammelt. Mit der „Continue“-Taste läuft das Programm bis zum nächsten Breakpoint weiter. Möchte man in kleineren Schritten voranschreiten, so helfen die „Step“-Tasten. Die einfache Step-Taste geht genau einen Zeile im Programmcode weiter. Über die Tasten „Step In“ und „Step Out“ wird es ermöglicht, in die in der aktuellen Zeile aufgerufenen Programme rein beziehungsweise raus zu springen und auch innerhalb dieser schrittweise die Berechnungen durchzugehen. Zuletzt ist mit der „Quit Debugging“-Taste die Möglichkeit gegeben, den Debug-Modus abzubrechen und das laufende Programm damit zu unterbrechen.

Mithilfe des schrittweisen Debuggings ist es möglich, sich genau an das Problem heranzutasten. Durch Setzen eines Breakpoints innerhalb einer for-Schleife kann man jeden einzelnen Schleifendurchlauf überprüfen – und im Idealfall erkennen, warum gerade in diesem einen Durchlauf das Programm abbricht. Häufige Fehler wie falsche Indizes oder unabsichtlich entstandene Nullen können damit schnell erkannt werden.

 

Noch keine Kommentare, sei der Erste!