Debugging mit pudb

In einem älteren Blogbeitrag ging es um das Debugging mit breakpoint() und dem Python Debugger (pdb). In diesem Artikel möchte ich pudb vorstellen, die visuelle Alternative zum Kommandozeilen-Tool pdb.

Die Installation erfolgt über pip:

$ pip3 install pudb  # Linux, macOS
$ pip install pudb  # Windows

Das Debugging-Tool pudb wird ebenfalls zusammen mit der built-in Funktion breakpoint() genutzt, dass seit Python 3.7 für das Debugging zur Verfügung steht. Damit das Zusammenspiel mit pudb funktioniert, muss die Umgebungsvariable PYTHONBREAKPOINT   entsprechend gesetzt werden:

export PYTHONBREAKPOINT=pudb.set_trace  # Linux, macOS
C:\> set PYTHONBREAKPOINT=pudb.set_trace  # Windows

Wird jetzt im Python-Code breakpoint() verwendet, führt das Ausführen der entsprechenden Python-Datei dazu, dass pudb gestartet wird.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

print('Enter the first number:')
first = input()

print('Enter the second number:')
second = input()

# Set a breakpoint:
breakpoint()

print(f'The sum of {first} and {second} is {first + second}.')

Angenommen voranstehender Code wurde in einer Datei mit der Bezeichnung “debug_example.py” gespeichert. Dann führt das Ausführen dieses Codes mit

$ python3 debug_example.py

dazu, dass im Terminal der visuelle Debugger pudb gestartet wird.

debugging with pudb in the terminal

Wie man der Abbildung entnehmen kann, wird auf der linken Seite der Code angezeigt, während auf der rechten Seite unter anderem die Werte der verwendeten Variablen angezeigt werden.

Mit J und K bzw. der Pfeil-Aufwärts- und der Pfeil-Abwärts-Taste kann man durch die Code-Zeilen navigieren. Mit der Taste N wird die aktuelle Code-Zeile ausgeführt, und C bewirkt die Ausführung des Codes bis zum nächsten Breakpoint, der mit B gesetzt werden könnte.

Beim erstmaligen Ausführen wird übrigens die Konfigurationsdatei “pudb.cfg” unter

.config/pudb

im eigenen Benutzerverzeichnis angelegt.

Weitere Informationen enthält die Dokumentation zu pudb.