Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Debugging: Protokollierung und PDF (Beispielanalyse 2)

Python-Debugging: Protokollierung und PDF (Beispielanalyse 2)

乌拉乌拉~
乌拉乌拉~Original
2018-08-23 13:38:081373Durchsuche

Im vorherigen Artikel haben wir erfahren, warum Python debuggt werden muss, und zwei Methoden zum Debuggen von Python vorgestellt. Die Debugging-Methode kann jedoch nicht in einem Artikel erklärt werden, daher werden wir in diesem Artikel darüber sprechen verbleibende zwei Debugging-Methoden. Ich hoffe, dass diese Debugging-Methoden für Sie hilfreich sein können und Ihnen dabei helfen, schneller auf dem Weg zum Erlernen von Python voranzukommen.

Protokollierung

Die dritte Methode ist: Das Ersetzen von print () durch Protokollierung ist die dritte Methode. Im Vergleich zu Assert löst die Protokollierung keinen Fehler aus, und das kann der Fall sein Ausgabe in eine Datei:

import logging
s = '0'
n = int(s)
logging.info('n = %d' % n)
print(10 / n)

logging.info() kann einen Text ausgeben. Führen Sie es aus und finden Sie keine Informationen außer ZeroDivisionError. Was ist los?

Keine Sorge, fügen Sie nach der Importprotokollierung eine Konfigurationszeile hinzu und versuchen Sie es erneut:

import logging
logging.basicConfig(level=logging.INFO)

Siehe die Ausgabe:

$ python err.py
INFO:root:n = 0
Traceback (most recent call last):
  File "err.py", line 8, in <module>
    print(10 / n)
ZeroDivisionError: division by zero

Das ist der Vorteil der Protokollierung, sie ermöglicht Sie können Datensätze angeben. Die Informationsebenen umfassen Debug, Info, Warnung, Fehler usw. Wenn wir level=INFO angeben, funktioniert logging.debug nicht. Ebenso funktionieren Debug und Info nach der Angabe von level=WARNING nicht mehr. Auf diese Weise können Sie verschiedene Informationsebenen sicher ausgeben, ohne sie zu löschen, und schließlich steuern, welche Informationsebenen ausgegeben werden.

Ein weiterer Vorteil der Protokollierung besteht darin, dass durch einfache Konfiguration eine Anweisung gleichzeitig an verschiedene Orte ausgegeben werden kann, beispielsweise in die Konsole und in Dateien.

pdb

Die vierte Möglichkeit besteht darin, die Python-Debugger-PDB zu starten, das Programm im Einzelschrittmodus laufen zu lassen und zu überprüfen den laufenden Status jederzeit. Wir bereiten zunächst das Programm

# err.py
s = &#39;0&#39;
n = int(s)
print(10 / n)

vor und starten es dann:

$ python -m pdb err.py
> /Users/michael/Github/learn-python3/samples/debug/err.py(2)<module>()
-> s = &#39;0&#39;

Nach dem Start mit dem Parameter -m pdb sucht pdb den Code, der als nächstes ausgeführt werden soll -> 0' . Geben Sie den Befehl l ein, um den Code anzuzeigen:

 (Pdb) l
  1     # err.py
  2  -> s = &#39;0&#39;
  3     n = int(s)
  4     print(10 / n)

Geben Sie den Befehl n ein, um den Code schrittweise durchzugehen:

(Pdb) n
> /Users/michael/Github/learn-python3/samples/debug/err.py(3)<module>()
-> n = int(s)
(Pdb) n
> /Users/michael/Github/learn-python3/samples/debug/err.py(4)<module>()
-> print(10 / n)

Sie können jederzeit den Befehl p Variablenname eingeben, um die Variable anzuzeigen:

(Pdb) p s
&#39;0&#39;
(Pdb) p n
0

Geben Sie den Befehl q ein, um das Debuggen zu beenden und das Programm zu beenden:

(Pdb) q

(Diese Methode des Debuggens auf der Befehlszeile über pdb ist theoretisch allmächtig, aber in Wirklichkeit zu mühsam)

Das ist alles für diesen Artikel. Für alle im Artikel beschriebenen Inhalte stellt dieser Artikel hauptsächlich das relevante Wissen zum Python-Debugging vor. Ich hoffe, dass Sie die Informationen verwenden können, um den oben genannten Inhalt zu verstehen. Ich hoffe, dass das, was ich in diesem Artikel beschrieben habe, für Sie hilfreich ist und Ihnen das Erlernen von Python erleichtert.

Weitere Informationen zu diesem Thema finden Sie in der Spalte Python-Tutorial auf der chinesischen PHP-Website.

Das obige ist der detaillierte Inhalt vonPython-Debugging: Protokollierung und PDF (Beispielanalyse 2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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