Tutorial:Programmieren mit Python/Debugging: Unterschied zwischen den Versionen

Aus KGS-Wiki
(Bilder folgen)
 
(Allgemeine Infos in Inhaltsseite ausgelagert.)
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Lückenhaft|Bilder
{{../Navigation}}
}}
Thonny verfügt über einen eingebauten [[Debugging|Debugger]] mit recht simpler Funktionalität, der aber für die meisten schulischen Zwecke genügt.


= Debugging =
Die Tastenkombination {{Tastatur|ShiftF5}} oder das Icon mit dem Käfer [[Datei:Thonny debugger.png|x12px]] starten den Debugger. Im Debug-Modus stehen dann diverse Werkzeuge zur Verfügung, um das Programm kontrolliert und schrittweise ablaufen zu lassen.
Die Abbildung rechts zeigt einen '''Bug''', zu deutsch ein ''Krabbeltier'', sowohl im wörtlichen als auch im übertragenen Sinne. Die abgebildete Motte hatte 1947 einen Kurzschluss in einem Computer verursacht und noch heute werden alle metaphorischen kleinen Krabbeltiere, die den Ablauf eines Computerprogramms stören, als Bugs bezeichnet<sup>1</sup>. Analog bezeichnet man das Entfernen dieser Bugs als '''Debugging''' und die dazu verwendeten Werkzeuge als '''Debugger'''. Eine analoge Form des Debuggings haben wir bereits bei der visuellen Programmierung verwendet: Trace-Tabellen.


Mithilfe eines Debuggers kann man ein Programm schrittweise durchlaufen und dabei z.B. die verwendeten Variablen oder den belegten Speicher im Auge behalten.
Eins der wichtigsten Werkzeuge sind '''Breakpoints'''. Breakpoints können gezielt platziert werden, um den Programmfluss an einer bestimmten Stelle zu unterbrechen und die weitere Ausführung der Kontrolle des Entwicklys zu überlassen.


Thonny verfügt über einen eingebauten Debugger mit recht simpler Funktionalität, der aber für die meisten schulischen Zwecke genügt.
Einen Breakpoint kann man mit einem Klick auf die Zeilennummer derjenigen [[Anweisung]] setzen, an der der Programmablauf unterbrochen werden soll. Neben dieser Zeilennummer erscheint dann ein roter Punkt [[Datei:Thonny breakpoint.png|x12px]].


Die Tastenkombination [Shift]+[F5] oder das Icon mit dem Käfer  starten den Debugger. Im Debug-Modus stehen dann diverse Werkzeuge zur Verfügung, um das Programm kontrolliert und schrittweise ablaufen zu lassen.
Sobald der Programmablauf beim Debuggen einen Breakpoint erreicht, wird er gestoppt, die aktuell betrachtete Programmzeile farblich hervorgehoben und das weitere Vorgehen dem Debuggy überlassen. Falls keine Breakpoints gesetzt sind, wird von Anfang an so verfahren.
 
Eins der wichtigsten Werkzeuge sind '''Breakpoints'''. Breakpoints können gezielt platziert werden, um den Programmfluss an einer bestimmten Stelle zu unterbrechen und die weitere Ausführung der Kontrolle des Entwicklers*der Entwicklerin zu überlassen.
 
Einen Breakpoint kann man mit einem Klick auf die Zeilennummer derjenigen Anweisung setzen, an der der Programmablauf unterbrochen werden soll. Neben dieser Zeilennummer erscheint dann ein roter Punkt .
 
Sobald der Programmablauf beim Debuggen einen Breakpoint erreicht, wird er gestoppt, die aktuell betrachtete Programmzeile farblich hervorgehoben und das weitere Vorgehen dem*der Debuggenden überlassen. Falls keine Breakpoints gesetzt sind, wird von Anfang an so verfahren.


Für das weitere Vorgehen stehen folgende Werkzeuge zur Verfügung, die entweder über die Icon-Symbolleiste oder das “Ausführen”-Menü zu erreichen sind:
Für das weitere Vorgehen stehen folgende Werkzeuge zur Verfügung, die entweder über die Icon-Symbolleiste oder das “Ausführen”-Menü zu erreichen sind:
Zeile 22: Zeile 15:
!Erläuterung
!Erläuterung
|-
|-
|Einzelschritt
|[[Datei:Thonny debug skip.png|x12px]] Einzelschritt
|Die hervorgehobene Zeile wird vollständig ausgeführt und zur nächsten auszuführenden Zeile gesprungen.
|Die hervorgehobene Zeile wird vollständig ausgeführt und zur nächsten auszuführenden Zeile gesprungen.
|-
|-
|Eintreten
|[[Datei:Thonny debug enter.png|x12px]] Eintreten
|Komplexere Anweisungen werden so kleinschrittig wie möglich abgearbeitet.
|Komplexere Anweisungen werden so kleinschrittig wie möglich abgearbeitet.
|-
|-
|Verlassen
|[[Datei:Thonny debug leave.png|x12px]] Verlassen
|Es wird ans Ende der schrittweisen Ausführung einer komplexen Anweisung gesprungen.
|Es wird ans Ende der schrittweisen Ausführung einer komplexen Anweisung gesprungen.
|-
|-
|Fortfahren
|[[Datei:Thonny debug resume.png|x12px]] Fortfahren
|Der Programmablauf wird normal bis zum nächsten Breakpoint bzw. falls es keinen gibt, zum Programmende fortgeführt.
|Der Programmablauf wird normal bis zum nächsten Breakpoint bzw. falls es keinen gibt, zum Programmende fortgeführt.
|-
|-
|Bis zum Cursor ausführen
|[[Datei:Thonny debug run to cursor.png|x12px]] Bis zum Cursor ausführen
|Der Programmablauf wird bis zur Position des Textcursors im Programmcode fortgeführt.
|Der Programmablauf wird bis zur Position des Textcursors im Programmcode fortgeführt.
|-
|-
Zeile 40: Zeile 33:
|Es wird einen Schritt im Programmablauf zurückgesprungen.
|Es wird einen Schritt im Programmablauf zurückgesprungen.
|}
|}
Beim ''Eintreten'' geht der Debugger so kleinschrittig wie möglich vor. Die folgenden elf Screenshots illustrieren, wie eine Benutzereingabe Schritt für Schritt vom Debugger verarbeitet wird, bis am Ende die Eingabe in der Variablen <code>startwert</code> gespeichert worden ist:
Beim ''Eintreten'' geht der Debugger so kleinschrittig wie möglich vor. Die folgenden elf Screenshots illustrieren, wie eine Benutzereingabe Schritt für Schritt vom Debugger verarbeitet wird, bis am Ende die Eingabe in der Variablen {{Python|startwert}} gespeichert worden ist:<gallery mode="slideshow">
{| class="wikitable"
Datei:Thonny debug 1.png|Schritt 1
!
Datei:Thonny debug 2.png|Schritt 2
!
Datei:Thonny debug 3.png|Schritt 3
!
Datei:Thonny debug 4.png|Schritt 4
!
Datei:Thonny debug 5.png|Schritt 5
|-
Datei:Thonny debug 6.png|Schritt 6
|
Datei:Thonny debug 7.png|Schritt 7
|
Datei:Thonny debug 8.png|Schritt 8
|
Datei:Thonny debug 9.png|Schritt 9
|
Datei:Thonny debug 10.png|Schritt 10
|-
Datei:Thonny debug 11.png|Schritt 11
|Schritt 1
</gallery>Insbesondere bei der Auswertung von komplexeren [[Ausdruck|Ausdrücken]], die nur in einigen Fällen Fehler produzieren, kann es hilfreich sein, sich nach jedem kleinsten Schritt des gegenwärtigen Zwischenstandes der Ausführung bewusst zu sein.
|Schritt 2
|Schritt 3
|Schritt 4
|-
|
|
|
|
|-
|Schritt 5
|Schritt 6
|Schritt 7
|Schritt 8
|-
|
|
|
|
|-
|Schritt 9
|Schritt 10
|Schritt 11
|
|}
Insbesondere bei der Auswertung von komplexeren Ausdrücken, die nur in einigen Fällen Fehler produzieren, kann es hilfreich sein, sich nach jedem kleinsten Schritt des gegenwärtigen Zwischenstandes der Ausführung bewusst zu sein.


Besonders hilfreich ist hierbei das andockbare '''Variablen'''-Fenster. In diesem Fenster kann der Inhalt aller verwendeten Variablen eines Programms eingesehen werden. Dies funktioniert jedoch nur, wenn der Programmablauf angehalten ist; während z.B. eine besonders lange Wiederholung läuft, zeigt das Variablenfenster keine Änderungen an. In diesem Fall muss der Debugger benutzt werden, um den Ablauf der Wiederholung Schritt für Schritt nachvollziehen zu können.
Besonders hilfreich ist hierbei das andockbare '''Variablen'''-Fenster. In diesem Fenster kann der Inhalt aller verwendeten Variablen eines Programms eingesehen werden. Dies funktioniert jedoch nur, wenn der Programmablauf angehalten ist; während z.B. eine besonders lange Wiederholung läuft, zeigt das Variablenfenster keine Änderungen an. In diesem Fall muss der Debugger benutzt werden, um den Ablauf der Wiederholung Schritt für Schritt nachvollziehen zu können.

Aktuelle Version vom 6. November 2024, 19:24 Uhr

Thonny verfügt über einen eingebauten Debugger mit recht simpler Funktionalität, der aber für die meisten schulischen Zwecke genügt.

Die Tastenkombination ShiftF5 oder das Icon mit dem Käfer Thonny debugger.png starten den Debugger. Im Debug-Modus stehen dann diverse Werkzeuge zur Verfügung, um das Programm kontrolliert und schrittweise ablaufen zu lassen.

Eins der wichtigsten Werkzeuge sind Breakpoints. Breakpoints können gezielt platziert werden, um den Programmfluss an einer bestimmten Stelle zu unterbrechen und die weitere Ausführung der Kontrolle des Entwicklys zu überlassen.

Einen Breakpoint kann man mit einem Klick auf die Zeilennummer derjenigen Anweisung setzen, an der der Programmablauf unterbrochen werden soll. Neben dieser Zeilennummer erscheint dann ein roter Punkt Thonny breakpoint.png.

Sobald der Programmablauf beim Debuggen einen Breakpoint erreicht, wird er gestoppt, die aktuell betrachtete Programmzeile farblich hervorgehoben und das weitere Vorgehen dem Debuggy überlassen. Falls keine Breakpoints gesetzt sind, wird von Anfang an so verfahren.

Für das weitere Vorgehen stehen folgende Werkzeuge zur Verfügung, die entweder über die Icon-Symbolleiste oder das “Ausführen”-Menü zu erreichen sind:

Werkzeug Erläuterung
Thonny debug skip.png Einzelschritt Die hervorgehobene Zeile wird vollständig ausgeführt und zur nächsten auszuführenden Zeile gesprungen.
Thonny debug enter.png Eintreten Komplexere Anweisungen werden so kleinschrittig wie möglich abgearbeitet.
Thonny debug leave.png Verlassen Es wird ans Ende der schrittweisen Ausführung einer komplexen Anweisung gesprungen.
Thonny debug resume.png Fortfahren Der Programmablauf wird normal bis zum nächsten Breakpoint bzw. falls es keinen gibt, zum Programmende fortgeführt.
Thonny debug run to cursor.png Bis zum Cursor ausführen Der Programmablauf wird bis zur Position des Textcursors im Programmcode fortgeführt.
Zurück schreiten Es wird einen Schritt im Programmablauf zurückgesprungen.

Beim Eintreten geht der Debugger so kleinschrittig wie möglich vor. Die folgenden elf Screenshots illustrieren, wie eine Benutzereingabe Schritt für Schritt vom Debugger verarbeitet wird, bis am Ende die Eingabe in der Variablen startwert gespeichert worden ist:

Insbesondere bei der Auswertung von komplexeren Ausdrücken, die nur in einigen Fällen Fehler produzieren, kann es hilfreich sein, sich nach jedem kleinsten Schritt des gegenwärtigen Zwischenstandes der Ausführung bewusst zu sein.

Besonders hilfreich ist hierbei das andockbare Variablen-Fenster. In diesem Fenster kann der Inhalt aller verwendeten Variablen eines Programms eingesehen werden. Dies funktioniert jedoch nur, wenn der Programmablauf angehalten ist; während z.B. eine besonders lange Wiederholung läuft, zeigt das Variablenfenster keine Änderungen an. In diesem Fall muss der Debugger benutzt werden, um den Ablauf der Wiederholung Schritt für Schritt nachvollziehen zu können.