Python-Step-Through-Code

Salman Mehmood 15 Februar 2024
  1. Verwenden Sie das pdb-Modul, um den Code in Python schrittweise durchzugehen
  2. Verwenden Sie Python IDLE, um den Code in Python schrittweise zu durchlaufen
Python-Step-Through-Code

In diesem Tutorial wird erläutert, wie Sie den Python-Debugger verwenden, um den Code schrittweise zu durchlaufen.

Wir werden ein Befehlszeilentool namens PDB von Grund auf erklären. Wir werden auch lernen, wie man Code mit Hilfe von Python IDLE schrittweise durchläuft.

Verwenden Sie das pdb-Modul, um den Code in Python schrittweise durchzugehen

Wie andere Programmiersprachen verfügt auch Python über ein hervorragendes Werkzeug zum Debuggen des Python-Skripts, den pdb, was für Python Debugger steht.

Es wird bereits installiert, wenn Sie Python auf Ihrem Betriebssystem installieren, sodass Sie kein pdb separat installieren müssen. Wenn Sie Python installiert haben, funktioniert es auf Ihrem Terminal.

Das pdb-Modul ist ein Werkzeug, das Ihnen beim Debuggen unglaublich viel Zeit sparen wird; es hilft uns, den Zustand eines laufenden Programms zu untersuchen. Wir können damit experimentieren, die Werte von Variablen ändern, Funktionen mit unterschiedlichen Argumenten aufrufen, Codeschnipsel ausführen und so weiter.

Es ist viel aussagekräftiger als eine übliche Druck-Anweisung und ergibt ein anderes Bild als das Testen. Unsere Tests zeigen nur an, dass unser Code nicht wie erwartet funktioniert, während uns das Debuggen ermöglicht, zu sehen, was während der Programmausführung passiert.

Jetzt fragen Sie sich vielleicht, warum wir pdb verwenden, wenn wir bereits die PyCharm-IDE haben und unseren Code auf der PyCharm-IDE debuggen können. Der Grund für die Verwendung von pdb ist, dass Sie Ihr Python-Skript manchmal in realen Situationen wahrscheinlich auf einem Server ausführen werden.

Im Allgemeinen haben Sie auf diesen Servern nicht den Luxus, eine IDE zu verwenden. Sie müssen das Terminal verwenden, um Ihr Python-Skript zu debuggen; Aus diesem Grund zeigen wir Ihnen, wie Sie ein Python-Skript mit dem Befehlszeilentool pdb debuggen.

Im Modul pdb gibt es einen Breakpoint namens set_trace(). Mit dieser Funktion haben Sie einen Haltepunkt, an dem Sie verschiedene Variablenwerte untersuchen und tun können, was Sie wollen.

Wir müssen nur zwei Codezeilen in unser Programm einfügen, und dann erhalten wir Befehlszeilenoperationen, mit denen wir eine ganze Reihe verschiedener Dinge tun können. Wir werden dies in Kürze demonstrieren.

Bevor wir in den Code einsteigen, sehen wir eine Zusammenfassung einiger der verschiedenen Befehlszeilenoperationen.

Operationen Beschreibung
n Dadurch wird die nächste Codezeile ausgeführt.
c Diese Operation setzt die Ausführung des Codes fort und schließt die Ausführung ab.
l Diese Operation listet die 3 Zeilen vor und nach der Zeile auf, in der sich die Ausführung befindet, sodass Sie sehen können, wo und welche drei Zeilen gerade ausgeführt werden.
s Damit können Sie in einen Funktionsaufruf einsteigen. Wenn Sie jetzt beim Aufrufen einer Funktion n verwenden, wird die gesamte Funktion ausgeführt und nach dem Funktionsaufruf mit der nächsten Zeile fortgefahren.
Mit dem s können Sie in eine Funktion einsteigen und sie Zeile für Zeile ausführen.
b Damit können Sie Breakpoints setzen. Sie können mehrere Haltepunkte setzen, indem Sie den Befehl b in das Programm einfügen.
b[int] Wir können b gefolgt von einer Ganzzahl setzen, um einen Haltepunkt an einer bestimmten Zeile einer Zahl zu setzen (z. B. b10).
b[func] Auf das b folgt ein Funktionsname, um einen Breakpoint auf einen Funktionsnamen ohne die eckigen Klammern zu setzen.
cl Es werden alle Breakpoints gelöscht.
cl[int] Das cl gefolgt von einer Ganzzahl löscht den Haltepunkt an einer bestimmten Zeilennummer, und das Leerzeichen ist optional. Wir können cl10 oder cl 10 eingeben; es macht keinen Unterschied.
p Wir haben auch die Möglichkeit des Drucks. Nehmen wir an, wir haben eine Variable x; Wenn wir es in die Python-Shell eingeben, wird der Wert von x ausgegeben.
Wir können die p-Anweisung mit den Klammern verwenden. Innerhalb der Klammern setzen wir einfach eine Variable.

Es stehen weitere Operationen zur Verfügung. Sie können hier mehr darüber lesen und erfahren.

Schauen wir uns ein Beispiel an, wo wir ein kleines Programm getippt haben. Es tut nichts; Es setzt nur einige Variablenwerte, print-Anweisungen und führt einige mathematische Funktionen aus.

Wir können sehen, dass wir pdb importiert haben, und dann haben wir mit der Funktion set_trace() einen Haltepunkt gesetzt.

import pdb


def transform(x, y):
    x *= 2
    y = y ** 2
    z = x + y
    return z


x = 50
y = 60
z = 5
n = 1000

pdb.set_trace()
transform(5, 10)
print("z =" + str(z))
n = transform(2, 3)
print("n =" + str(n))

Schauen wir uns an, wie das Programm funktioniert und wie der Debugger verwendet wird, um einige Funktionen zu analysieren. Wenn wir also das Programm ausführen, sehen wir, dass wir Python in die Eingabeaufforderung des Debuggers eingegeben haben.

Die nächste Zeile, die ausgeführt wird, wäre die Funktion transform(), also sollten wir uns als erstes die Liste l ansehen. Es zeigt die vorherigen drei Zeilen, die ausgeführt werden, und die nächsten drei auszuführenden Zeilen, und es zeigt, wo wir uns gerade befinden, was die Verwendung von -> anzeigt.

Python Step-Through-Code mit pdb - Ausgabe 1

Wir haben jetzt die Möglichkeit, den Befehl n zu verwenden, um die nächste Zeile auszuführen, was die gesamte Funktion transform() ausführen und zu Zeile 15 springen würde. Oder wir können s verwenden, um in die Zeile transform() Zeile für Zeile innerhalb der transform()-Funktion und sehen Sie, was darin passiert.

Wir werden n verwenden, um zu sehen, was dort passiert ist. Mit n haben wir die Funktion transform() ausgeführt.

Wenn wir Variablenwerte drucken wollen, können wir die Namen der Variablen eingeben, aber wir können n nicht ausdrucken, weil n uns die nächste Ausführungszeile liefert.

Die Alternative wäre, den Befehl p() zu verwenden, während die Variable n in Klammern gesetzt wird, um ihren Wert auszugeben.

Python Step-Through-Code mit pdb - Ausgabe 2

Wir können auch den Befehl b verwenden, wenn wir uns ansehen möchten, welche anderen Breakpoints wir gesetzt haben. Wenn wir also b eingeben, gibt es nichts zurück, aber wir können einen weiteren Breakpoint in Zeile 16 setzen. Wenn wir nun eingeben b, es listet unsere Breakpoints auf.

Das cl löscht alle Breakpoints. Sagen wir ja, also löschen wir unsere Breakpoints.

Wir können auch einen Haltepunkt auf einen Funktionsnamen setzen. Wenn wir das tun, wird am Anfang der Funktion transform() ein Haltepunkt gesetzt, sodass wir jedes Mal, wenn wir diese Funktion aufrufen, in die Funktion transform() einsteigen.

Wenn wir c eingeben, wird es bis zum nächsten Haltepunkt fortgesetzt, und wenn wir erneut c eingeben, ist unser Code beendet.

Python Step-Through-Code mit pdb - Ausgabe 3

Das Debugging in den Code kann mit der Funktion breakpoint() erreicht werden, einer neuen eingebauten Funktion, die in Version 3.7 eingeführt wurde.

Laut den offiziellen Python-Dokumenten docs rufen wir standardmäßig hinter den Kulissen im Grunde genommen pdb.set_trace() mit breakpoint() auf. Wir müssen pdb nicht importieren und set_trace() aufrufen, stattdessen können wir breakpoint() verwenden, das genauso funktioniert.

Verwenden Sie Python IDLE, um den Code in Python schrittweise zu durchlaufen

Dieser Abschnitt zeigt, wie man ein Python-Programm mit Python IDLE debuggt. Zur Veranschaulichung nehmen wir ein Beispiel, das zwei Zahlen addiert.

n1 = int(input("Enter a first number :"))
n2 = int(input("Enter a second number :"))
Res = n1 + n2
print(n1, "+", n2, Res)

Um den Debugger in Python IDLE zu verwenden, müssen wir zuerst den Debugger einschalten, um Python IDLE zu öffnen. Nach dem Öffnen von Python IDLE können wir die Debug-Option oben öffnen.

Nach dem Klicken wird ein Debug-Steuerungsfenster angezeigt. Hier können wir sehen, dass Debug aktiviert ist.

Schrittweiser Python-Code mit Python IDLE – Beispiel 1

Nach dem Öffnen können wir das Debug-Steuerungsfenster sehen. Dieses Steuerungsfenster ist inaktiv, und wir können es nirgendwo anklicken.

Wir müssen das Python-Skript ausführen, während wir f5 drücken, um es zu aktivieren.

Im Debug-Steuerungsfenster gibt es mehrere Schaltflächen; die Namen der Schaltflächen lauten go, step, over, out, und quit. Wenn wir go drücken, werden wir aufgefordert, die Eingabe einzugeben und die Ausgabe nach Eingabe der Eingabe zu geben; andernfalls bleibt es hängen.

Die Verwendung von out setzt voraus, dass Sie eine Funktion ausführen, damit sie die Ausführung des Codes beendet und Ihnen nicht die schrittweise Ausführung des Programms zeigt. Es führt einfach das Programm aus und zeigt Ihnen die Ausgabe; Dies ist nützlich, wenn Sie die schrittweise Ausführung überspringen möchten.

Wenn Sie sehen möchten, wie dieses Programm funktioniert, welche Zeile ausgeführt wird und wie dieses Programm abläuft, können Sie diesen oder einen weiteren Schritt ausführen. Die Option Schritt gibt Ihnen alle Informationen über das Programm.

Wenn wir nicht wissen wollen, wie das Programm intern arbeitet und nur wissen wollen, welche Zeile dafür ausgeführt wird, ist die beste Option over. Der letzte ist quittieren; wenn wir quit verwenden, wird es während der Ausführung eines Programms beendet.

Hier ist einige Arbeit des Debuggers mit Python IDLE.

Schrittweiser Python-Code mit Python IDLE – Beispiel 2

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn