Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python-Debugging meistern: Effiziente Techniken & Best Practices

Python-Debugging meistern: Effiziente Techniken & Best Practices

Python-Code debuggen bedeutet für viele von uns: print-Statements einfügen und basierend auf der Ausgabe rätseln, was vor sich geht. Nicht ideal, aber aus irgendeinem Grund wollen viele den Python-Debugger nicht anfassen.

Falls Sie zu denen gehören, die print zum Debuggen nutzen: Ich verurteile Sie nicht. Python lernen ist schwer. Programmieren ist schwer. Das Leben ist schwer. Ich verstehe, dass das Erlernen eines weiteren Tools müde macht, wenn man schon kämpft. Und den print-Befehl einzufügen… es ist einfach einfacher. Ein kleines Geständnis: Ich mache es auch andauernd. Es ist nicht so schlimm, wie manche tun.

Aber ich zeige Ihnen einen kleinen Trick, der genauso einfach ist wie print-Statements einzufügen. Dieser Trick gibt Ihnen jedoch unendliche Debugging-Möglichkeiten und lässt Sie die Welt erobern, falls nötig.

Python-Debugger-Breakpoint setzen

Sie brauchen keine IDE, um Code richtig zu debuggen. Dieser Trick funktioniert immer, selbst im einfachsten Editor und sogar in Jupyter Notebooks.

Der Trick: einen sogenannten Breakpoint mit der Anweisung breakpoint() setzen. Sie können ihn in Ihren Code einfügen, egal welchen Editor oder IDE Sie nutzen, genau an der Stelle, wo Sie sonst den lästigen print-Befehl setzen würden.

Was passiert dann? Finden wir es heraus! Erstellen Sie ein simples Programm wie das folgende:

def add_two(x):
    return x + 2

for i in range(1, 10):
    a = add_two(i)
    breakpoint()
    print(a)

Wenn Sie das ausführen – egal ob in der REPL, von der Kommandozeile oder in Ihrer IDE – landen Sie im Python-Debugger PDB. Und nun?

Python-Debugger nutzen

Wenn ich das kleine Programm oben starte, passiert Folgendes:

$ python3 breakpointing.py
> /home/erik/breakpointing.py(7)<module>()
-> print(a)
(Pdb) 

Ein paar Dinge sind zu sehen:

Der Python-Debugger ist eigentlich eine voll funktionsfähige Python-Shell, genau wie die REPL.

An diesem Punkt können wir die aktuelle Umgebung inspizieren. Sehen wir, welchen Wert a gerade hat:

(Pdb) print(a)
3
(Pdb) print(i)
1

Statt print können Sie auch den PDB-spezifischen Befehl p nutzen:

(Pdb) p a
3
(Pdb) p i
1

Nächste Zeile ausführen

Was, wenn wir die nächste Code-Zeile ausführen wollen? Zwei Optionen:

Zur Verdeutlichung: step betritt einen Funktionsaufruf gerne und bricht innerhalb dieser Funktion. Im Gegensatz dazu führt next die Funktion bis zur Rückgabe aus und bricht bei der nächsten Zeile.

Andere Debugger und IDEs nennen dies „Step Into“ (statt step) und „Step Over“ (statt next).

Jetzt nutzen wir beide:

$ python3 breakpointing.py
-> print(a)
(Pdb) s
3
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) n
-> breakpoint()
(Pdb) n
-> print(a)
(Pdb) n
4
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) s
--Call--
-> def add_two(x):
(Pdb) s
-> return x + 2
(Pdb) s
--Return--
5
-> return x + 2
(Pdb) s
-> breakpoint()
(Pdb)

Wie Sie sehen, übergehen wir den Aufruf von add_two beim ersten Mal mit n. Beim zweiten Mal steigen wir mit s in die Funktion ein.

Python-Debugger-Befehle

Es gibt mehr Befehle, die Sie selbst ausprobieren können. Ich liste nicht alle, nur die nützlichsten:

Für die komplette Dokumentation: Python-Debugger-Seite, wo alle Befehle gelistet sind.

Weiterlernen

Obwohl dies super hilfreich sein kann, lohnt es sich, in den Debugger Ihrer IDE einzutauchen. Nutzen Sie VSCode? Ich habe ein Tutorial geschrieben, wie man Python-Code in VSCode debuggt.

Python-Debugging meistern: Effiziente Techniken & Best Practices

Python

  1. Python I/O & Modul-Importe meistern: Praxisleitfaden
  2. Python print()-Funktion: Praktischer Leitfaden mit Beispielen
  3. Python String-Operationen meistern: Replace, Join, Split, Reverse und Case Conversion
  4. Python time.sleep(): Delays in Ihrem Code hinzufügen (Beispiel)
  5. Python Print ohne Newline: Den end-Parameter & andere Techniken meistern
  6. Gewinne maximieren mit Fords erweiterter Connected Fleet Management
  7. Produktion beschleunigen: Wie Prototyping Ihren Fertigungsprozess verbessert
  8. 5 bewährte Strategien zur Qualitätssteigerung von Blechteilen
  9. 3 bewährte Strategien zur Optimierung Ihres industriellen Wartungsplans
  10. PCB-Design meistern: Wesentliche Tipps & Best Practices für Ingenieure