Kapitel 21
Fehler finden und vermeiden
594
Meldungen in der Log-Datei:
21.7 Debugging
Unter einem Bug (engl. für Käfer) versteht man im Informatik-Jargon einen Fehler. Debug-
ging meint die Beseitigung von Fehlern aus einem Programmtext. Der Begriff stammt
angeblich aus der Zeit, als Computer noch mit Röhren arbeiteten und ganze Räume füllten.
Damals krabbelten gelegentlich Käfer (bugs) über die Lötstellen und verursachten Kurz-
schlüsse. Debugging war dann – im wahrsten Sinne des Wortes – die Beseitigung von
Käfern aus den Innereien der Rechenanlage.
Beim Debugging (im modernen Sinne) geht es allein um das Aufspüren semantischer Fehler.
Als Hilfsmittel bietet IDLE einen integrierten Debugger an. Bei einem Klick auf das Feld
D
EBUGGER im Menü DEBUG des Shell-Fensters öffnet sich ein Kontroll-Fenster (Abbildung
21.6). Startet man nun im Editor-Fenster durch Anklicken von R
UN MODULE das Skript, so
läuft das Programm unter der Kontrolle des Debuggers. Abbildung 21.6 zeigt eine Moment-
aufnahme aus einer Analyse der
quicksort()-Funktion.
Wenn (wie in Abbildung 21.6) alle Checkboxen oben rechts ausgewählt sind, zeigt das Kon-
trollfenster des Debuggers Folgendes:
Im oberen Fenster sieht man den Stack der Laufzeitumgebung, d.h. Kurzbeschreibun-
gen der Execution Frames, die während des Programmlaufs bis zum aktuellen Zeit-
punkt erzeugt worden sind.
Besonders wichtig ist der Bereich unter der Überschrift LOCALS, in dem die Inhalte der
lokalen Variablen (dazu gehören auch die Parameter) der aktuell aufgerufenen Funktion
dargestellt sind. Im Beispiel (Abbildung 21.6) hat die lokale Variable
s im aktuellen Auf-
ruf von
quicksort() den Wert [30, 24].
Unter GLOBALS ist entsprechend der globale Namensraum dargestellt.
Im Editorfenster mit dem Skript, das gerade analysiert wird, wird die gerade ausgeführte
Zeile durch einen Balken markiert.
Bei einer typischen Debugging-Sitzung geht man z.B. folgendermaßen vor:
Durch mehrfaches Klicken auf die Schaltfläche S
TEP führt man das Programm schrittweise
aus, das heißt, der Lauf wird nach jeder Programmzeile unterbrochen. Nach jeder einzelnen
Anweisung kontrolliert man anhand der lokalen und globalen Namensräume, ob der aktu-
elle Zustand des Prozesses so ist, wie man es erwartet hat. Besitzt etwa eine Variable einen
überraschenden Wert, so ist dies ein Hinweis auf einen logischen Fehler in der zuvor aus-
geführten Programmzeile.
Die
Step-Funktion bewirkt, dass bei einem Aufruf einer Funktion in die Definition dieser
Funktion »hineingesprungen« wird und die Ausführung dieser Funktion Schritt für Schritt
verfolgt wird. Wenn die Funktion in einem anderen Modul definiert ist, öffnet sich ein wei-
teres Editorfenster mit dem Programmtext, der zu dieser Funktion gehört. Wenn Sie die
log_test_3, Zeile 7: Meldung 0.
log_test_3, Zeile 7: Meldung 1.
log_test_3, Zeile 7: Meldung 2.
log_test_3, Zeile 7: Meldung 3.

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.