9.1 Start des Debuggers
Wir werden den Debug-Prozess anhand von PyCharm lernen, was sowohl logisch als auch angenehm ist. Jetzt wirst du das sehen.
In PyCharm kannst du dein Programm in zwei Modi starten:
Programmausführungsmodi | Symbol in der Leiste | Tastenkombinationen |
---|---|---|
Normale Ausführung | Shift+F10 | |
Start im Debug-Modus | Shift+F9 |
Den normalen Modus kennst du schon: das Programm wird gestartet, ausgeführt und beendet. Aber der Debug-Modus hält so einige Überraschungen für dich bereit.
Der Debug-Modus
Der Debug-Modus erlaubt es dir, das gesamte Programm Schritt für Schritt auszuführen. Oder besser gesagt, zeilenweise: Zeile für Zeile. Dabei kannst du die Werte der Variablen bei jedem Schritt des Programms beobachten (nach der Ausführung jeder Codezeile). Und sogar ihre Werte ändern!
Um das Debugging mindestens ein wenig zu beherrschen, musst du drei Dinge lernen:
- Breakpoints
- Schrittweise Ausführung
- Werte der Variablen ansehen
9.2 Breakpoints (Break Points
)
Die IDE erlaubt es dir, spezielle Markierungen im Code zu setzen — Breakpoints (break point)
. Jedes Mal, wenn das im Debug-Modus gestartete Programm eine Zeile mit einem break point
erreicht, wird es pausiert.
Um einen break point
in einer bestimmten Zeile zu setzen, musst du einfach in PyCharm links von dieser Zeile klicken. Ein Beispiel:
Die Zeile wird dann mit einem Breakpoint (break point)
markiert, und PyCharm hebt die gesamte Zeile in Rot hervor:
Ein erneuter Klick mit der Maus auf die Leiste links vom Code entfernt den gesetzten break point
.
Ebenso kannst du einen break point
einfach in der aktuellen Zeile mit der Tastenkombination Ctrl+F8 setzen. Ein erneutes Drücken von Ctrl+F8 in einer Zeile, die bereits einen break point
hat, entfernt ihn.
9.3 Start des Programms im Debug-Modus
Wenn dein Programm mindestens einen Breakpoint enthält, kannst du es im Debug-Modus starten (Shift+F9 oder das „Käfer“-Symbol).
Nach dem Start im Debug-Modus wird das Programm wie gewohnt ausgeführt. Sobald es jedoch eine break point
-markierte Zeile erreicht, wird es pausiert. Ein Beispiel:
In der oberen Hälfte des Screenshots siehst du den Programmcode mit zwei Breakpoints. Das Programm steht bei Zeile 2 — markiert durch eine blaue Linie
. Zeile 2 ist noch nicht ausgeführt: Es wurde noch nichts in die Konsole ausgegeben.
In der unteren Bildschirmhälfte siehst du die Debug-Panels: das Thread & variables
-Panel, das Console
-Panel (Bildschirm-Ausgabe) und eine Reihe von Debugging-Schaltflächen.
Du kannst dein Programm von der Pause nehmen (fortsetzen), indem du die Schaltfläche Resume Program
auf der linken unteren Seite drückst (oder die Taste F9 drückst).
Wenn du diese Schaltfläche drückst (oder F9), führt das Programm die Ausführung fort, bis es den nächsten Breakpoint erreicht oder endet. Hier ist, was wir sehen werden, nachdem diese Schaltfläche gedrückt wurde:
Das Programm ist beim zweiten Breakpoint angehalten, und in der Konsole sind die Worte "Hello"
und "and"
ausgegeben – ein Zeichen dafür, dass von den drei Zeilen der Bildschirmausgabe nur zwei ausgeführt wurden.
9.4 Schrittweise Ausführung
Wenn dein Programm im Debug-Modus läuft, kannst du es auch schrittweise ausführen: ein Schritt — eine Zeile. Für die schrittweise Ausführung gibt es zwei Tastenkombinationen: F7 und F8: Jede von ihnen führt zur Ausführung der aktuellen Codezeile. Du musst jedoch zunächst dein Programm mit einem break point
anhalten.
Wenn du dein Programm zeilenweise ausführen möchtest, musst du einen break point
ganz am Anfang — in der ersten Zeile mit Code — setzen und es im Debug-Modus starten.
Wenn das Programm anhält, kannst du mit der zeilenweisen Ausführung beginnen. Ein Druck der Taste F8 — eine Zeile.
So wird unser Programm aussehen, nachdem es angehalten und die Taste F8 einmal gedrückt wurde:
Die erste Zeile — print("Hello")
— ist bereits ausgeführt, und die aktuelle Zeile ist die zweite. Du kannst auch im unteren Teil des Screenshots sehen, dass das Wort "Hello"
bereits auf dem Bildschirm angezeigt wurde.
9.5 Schrittweise Ausführung mit Funktionsaufrufen
Wenn dein Programm eigene Funktionen hat und du möchtest, dass es im Debug-Modus nicht nur schrittweise ausgeführt wird, sondern auch in deine Funktionen geht, musst du für den „Funktionsaufruf“ nicht die Taste F8, sondern die Taste F7 drücken.
Angenommen, du führst dein Programm schrittweise aus und hast gerade an der 5. Zeile angehalten. Wenn du die Taste F8 drückst, wird PyCharm einfach die fünfte Zeile ausführen und zur sechsten übergehen.
Wenn du jedoch F7 drückst, wird PyCharm die Funktion hello()
schrittweise ausführen:
Es ist ganz einfach. Wenn es dir nicht so wichtig ist, was und wie innerhalb der Methode passiert, drückst du F8, wenn es wichtig ist — F7 und führst den gesamten Code in der Methode schrittweise aus.
GO TO FULL VERSION