Heim Backend-Entwicklung Python-Tutorial So verwenden Sie pdb zum Debuggen von Python in einer Linux-Umgebung

So verwenden Sie pdb zum Debuggen von Python in einer Linux-Umgebung

Mar 30, 2018 pm 04:20 PM
linux python 调试


pdb ist ein Paket, das mit Python geliefert wird. Es bietet eine interaktive Quellcode-Debugging-Funktion für Python-Programme. Zu seinen Hauptfunktionen gehören das Festlegen von Haltepunkten, das Debuggen von Einzelschritten, das Anzeigen des aktuellen Codes, das Anzeigen von Stapelfragmenten und dynamische Funktionen Ändern Sie den Wert einer Variablen usw. pdb bietet einige häufig verwendete Debugging-Befehle.

Beschreibung allgemeiner Befehle für pdb:

l #step Einzelschrittoperation, Kann die Funktion eingeben
p variable Haltepunkte
cl               #clear alle Haltepunkte löschen                                                                                                                          🎜>
Debug-Protokoll:
pdb set breakpoints können dem Programm hinzugefügt werden:
import pdb
Fügen Sie pdb.set_trace() hinzu, wo Haltepunkte gesetzt werden müssen
Führen Sie python -m pdb test.py aus

Im Folgenden wird anhand konkreter Beispiele beschrieben, wie Sie pdb zum Debuggen verwenden.


Listing 1. Testcode-Beispiel
import pdb
a = "aaa"
pdb.set_trace()
b = "bbb"
c = " ccc"
final = a + b + c
print final

Listing 2. Verwenden von pdb zum Debuggen
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> /root/epdb1.py(4)?()
-> b = "bbb"
(Pdb) n
> ( )
-> c = "ccc"
(Pdb)
> /root/epdb1.py(6)?()
-> 🎜 > (Pdb) list
1 import pdb
2 a = "aaa"
3 pdb.set_trace()
4 b = "bbb"
5 c = "ccc"
6 -> final = a + b + c
7 print final
[EOF]
(Pdb)
[EOF]
(Pdb) n
> / epdb1.py(7)?()
-> print final
(Pdb)

Den Wert der Variablen drucken: Wenn Sie den Wert der Variablen während des Debuggens drucken müssen, Sie können p direkt über dem Variablennamen verwenden. Beachten Sie jedoch, dass beim Drucken der spezifische Wert erst angezeigt wird, nachdem die aktuelle Anweisung ausgeführt wurde. Andernfalls wird ein NameError: <-Fehler angezeigt gemeldet werden.

Listing 3. Drucken von Variablen während des Debug-Prozesses
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> /root/epdb1.py(4)?( )
-> b = "bbb"
(Pdb) n
> /root/epdb1.py(5)?()
-> c = "ccc"
(Pdb) p b
'bbb'
(Pdb)
'bbb'
(Pdb) n
> /root/epdb1.py(6)?()
- > final = a + b + c
(Pdb) p c
'ccc'
(Pdb) p final
*** NameError: > (Pdb) n
> /root/epdb1.py(7)?()
-> print final
(Pdb) p final
'aaabbbccc'
(Pdb)

Verwenden Sie c, um das aktuelle Debug zu stoppen und die Ausführung des Programms fortzusetzen. Wenn im folgenden Programm weitere Anweisungen von set_statement() vorhanden sind, wechselt es erneut in den Debug-Status. Leser können die Überprüfung von set_trace() vor dem endgültigen Codedruck hinzufügen.


Listing 4. Beenden Sie das Debuggen und führen Sie das Programm weiter aus
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> (4 )?()
-> b = "bbb"
(Pdb) n
> /root/epdb1.py(5)?()
-> ccc"
(Pdb) c
aaabbbccc

Code anzeigen: Der aktuelle Codeblock wird beim Debuggen möglicherweise nicht gespeichert. Wenn Sie einen bestimmten Codeblock anzeigen möchten, können Sie ihn mit dem Befehl list oder l anzeigen. list verwendet den Pfeil ->, um auf die aktuelle Debug-Anweisung zu verweisen.

Listing 6. Während des Debug-Prozesses angezeigter Code
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> /root/epdb1.py(4)?( )
-> b = "bbb"
(Pdb) list
1 import pdb
2 a = "aaa"
3 pdb.set_trace()
4 -> b = "bbb"
5 c = "ccc"
6 final = a + b + c
7 pdb.set_trace()
8 print final
[EOF]
( Pdb) c
> /root/epdb1.py(8)?()
-> print final
(Pdb) list
3 pdb.set_trace()
4 b = "bbb"
5 c = "ccc"
6 final = a + b + c
7 pdb.set_trace()
8 -> print final
[EOF]
(Pdb)


Debug bei der Verwendung von Funktionen


Listing 6. Beispiel für die Verwendung von Funktionen
import pdb
def combine(s1,s2 ): # define Unterroutine kombinieren, die...
s3 = s1 + s2 + s1 # s2 zwischen Kopien von s1 einklemmt, ...
s3 = '"' + s3 +'"' # schließt es in doppelte Anführungszeichen ein,. ..
return s3 # und gibt es zurück
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = Combine (a,b)
print final

Wenn Sie n direkt zum Debuggen verwenden, wird es als normale Zuweisung behandelt, wenn Sie die final=combine(a,b)-Anweisung erreichen Verarbeitung, geben Sie den Druck endgültig ein. Was ist, wenn Sie eine Funktion debuggen möchten? Sie können s direkt zum Aufrufen des Funktionsblocks verwenden. Das einstufige Debuggen in der Funktion ähnelt der obigen Einführung. Wenn Sie die Funktion nicht schrittweise durchlaufen möchten, können Sie direkt am Haltepunkt r drücken, um zum aufrufenden Ort zu gelangen.

清单 7. 对函数进行 debuggen
[root@rcc-pok-idg-2255 ~]# python epdb2.py 
 > /root/epdb2.py(10)?() 
 -> b = "bbb"
 (Pdb) n 
 > /root/epdb2.py(11)?() 
 -> c = "ccc"
 (Pdb) n 
 > /root/epdb2.py(12)?() 
 -> final = Combine(a,b) 
 (Pdb) s 
 --Call-- 
 > /root/epdb2.py(3)combine() 
 -> def combin(s1,s2):      # Subroutine Combine definieren, die... 
 (Pdb) n 
 > /root/epdb2.py(4)combine() 
 -> s3 = s1 + s2 + s1    # fügt s2 zwischen Kopien von s1 ein, ... 
 (Pdb) list 
  1     import pdb 
  2 
  3     def combin(s1,s2):      # Unterroutine definieren kombinieren, was... 
  4  ->     s3 = s1 + s2 + s1    # fügt s2 zwischen Kopien von s1 ein, ... 
  5         s3 = '"' + s3 +'"'   # schließt es in doppelte Anführungszeichen ein,... 
  6         return s3            # und gibt es zurück. 
  7 
  8     a = "aaa"
  9     pdb.set_trace() 
 10     b = "bbb"
 11     c = "ccc"
 (Pdb) n 
> /root/epdb2.py(5)combine() 
 -> s3 = '"' + s3 +'"'   # schließt es in doppelte Anführungszeichen ein,... 
 (Pdb) n 
 > /root/epdb2.py(6)combine() 
 -> return s3            # und gibt es zurück. 
 (Pdb) n 
 --Return-- 
 > /root/epdb2.py(6)combine()->'"aaabbbaaa"'
 -> return s3            # und gibt es zurück. 
 (Pdb) n 
 > /root/epdb2.py(13)?() 
 -> final drucken 
 (Pdb)


在调试的时候动态改变值如下实例.需要注意的是下面有个错误,原因是 b 已经被赋值了,如果想重新改变 b 的赋值,则应该使用!b。


清单 8. 在调试的时候动态改变值
[root@rcc-pok- idg-2255 ~]# python epdb2.py 

> /root/epdb2.py(10)?() 
 -> b = "bbb"
 (Pdb) var = "1234"
 (Pdb) b = "avfe"
 *** The specified object &#39;= "avfe"&#39; is not a function 
 or was not found along sys.path. 
 (Pdb) !b="afdfd"
 (Pdb)
Nach dem Login kopieren

相关推荐:

用Pdb库调试Python的方式及常用的命令

使用PDB模式调试Python程序介绍

使用PDB简单调试Python程序简明指南

Das obige ist der detaillierte Inhalt vonSo verwenden Sie pdb zum Debuggen von Python in einer Linux-Umgebung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Computerkonfiguration ist für VSCODE erforderlich? Welche Computerkonfiguration ist für VSCODE erforderlich? Apr 15, 2025 pm 09:48 PM

VS Code system requirements: Operating system: Windows 10 and above, macOS 10.12 and above, Linux distribution processor: minimum 1.6 GHz, recommended 2.0 GHz and above memory: minimum 512 MB, recommended 4 GB and above storage space: minimum 250 MB, recommended 1 GB and above other requirements: stable network connection, Xorg/Wayland (Linux)

Python: Automatisierung, Skript- und Aufgabenverwaltung Python: Automatisierung, Skript- und Aufgabenverwaltung Apr 16, 2025 am 12:14 AM

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Welche Sprache wird VSCODE verwendet? Welche Sprache wird VSCODE verwendet? Apr 15, 2025 pm 11:03 PM

Visual Studio Code (VSCODE) wurde von Microsoft entwickelt, das mit dem Elektronen -Framework erstellt wurde und hauptsächlich in JavaScript geschrieben wurde. Es unterstützt eine breite Palette von Programmiersprachen, einschließlich JavaScript, Python, C, Java, HTML, CSS usw., und kann durch Erweiterungen Unterstützung für andere Sprachen unterstützen.

Was ist der Hauptzweck von Linux? Was ist der Hauptzweck von Linux? Apr 16, 2025 am 12:19 AM

Zu den Hauptanwendungen von Linux gehören: 1. Server -Betriebssystem, 2. Eingebettes System, 3. Desktop -Betriebssystem, 4. Entwicklungs- und Testumgebung. Linux zeichnet sich in diesen Bereichen aus und bietet Stabilität, Sicherheits- und effiziente Entwicklungstools.

Python vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Python vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Apr 16, 2025 am 12:12 AM

Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

VSCODE Running Task -Verknüpfungsschlüssel VSCODE Running Task -Verknüpfungsschlüssel Apr 15, 2025 pm 09:39 PM

Ausführen von Aufgaben in VSCODE: Erstellen Sie Tasks.json -Datei, Versions- und Aufgabenliste angeben. Konfigurieren Sie den Beschriftung, den Befehl, die Argumente und die Art der Aufgabe; Speichern und laden Sie die Aufgabe neu; Führen Sie die Aufgabe mit der Verknüpfungsschlüssel -Strg -Verschiebung B (macOS für CMD Shift B) aus.

VSCODE Vorheriger nächster Verknüpfungsschlüssel VSCODE Vorheriger nächster Verknüpfungsschlüssel Apr 15, 2025 pm 10:51 PM

VS Code One-Step/Nächster Schritt Verknüpfungsschlüsselnutzung: Einschritt (rückwärts): Windows/Linux: Strg ←; macOS: CMD ← Nächster Schritt (vorwärts): Windows/Linux: Strg →; macos: cmd →

So führen Sie Code mit VSCODE aus So führen Sie Code mit VSCODE aus Apr 15, 2025 pm 09:51 PM

Das Ausführen von Code in VS -Code dauert nur sechs Schritte: 1. Öffnen Sie das Projekt; 2. Erstellen und schreiben Sie die Codedatei; 3. Öffnen Sie das Terminal; 4. Navigieren Sie zum Projektverzeichnis; 5. Führen Sie den Code mit den entsprechenden Befehlen aus; 6. Die Ausgabe anzeigen.

See all articles