Verwandte: [Python] Super Nützliches Debuggen
@ Einführung in Python für die Berechnung von Wissenschaft und Technologie - Entwicklungsgrundlagen, wichtige Bibliotheken, Beschleunigung - von Kenji Nakahisa p80
Wenn Sie IPython (oder Jupyter Notebook) verwenden, ist "Post-Mortem-Debugging" möglich. Beim "Post-Mortem-Debugging" wird das Debugging ausgeführt, nachdem ein Fehler aufgetreten ist.
In [26]: run myscript.py
...
NameError: name 'z' is not defined
In [27]: debug
Starten Sie das Debuggen mit
Es scheint, dass Sie im Fluss des Ausführens des Programms und des Debuggens arbeiten können, nachdem Sie den Fehler bemerkt haben.
https://docs.python.jp/3/library/pdb.html
Es unterstützt auch das Post-Mortem-Debugging und kann programmgesteuert aufgerufen werden.
Bedeutet dies, dass Post-Mortem-Debugging mit Python selbst möglich ist?
pdb.post_mortem()
https://docs.python.jp/3/library/pdb.html
pdb.post_mortem(traceback=None) Gibt das Post-Mortem-Debugging des angegebenen Traceback-Objekts ein.
Ich habe folgendes gefunden: https://stackoverflow.com/questions/242485/starting-python-debugger-automatically-on-error
Ich habe es versucht.
Betriebsumgebung
CentOS 6.8 (64bit)
httpd.x86_64 0:2.2.15-54.el6.centos
Python 2.6.6
postdebug_170907.py
import pdb, traceback, sys
def addxy(x, y):
return z
try:
x, y = 3.141, 2.718
z = addxy(x, y)
except:
type, value, tb = sys.exc_info()
traceback.print_exc()
pdb.post_mortem(tb)
$ python postdebug_170907.py
Traceback (most recent call last):
File "postdebug_170907.py", line 8, in <module>
z = addxy(x, y)
File "postdebug_170907.py", line 4, in addxy
return z
NameError: global name 'z' is not defined
> /home/wrf/WORK/PYTHON/postdebug_170907.py(4)addxy()
-> return z
(Pdb) p x
3.141
Es scheint, dass pdb startet, wenn ein Fehler auftritt und Sie px usw. debuggen können.
Es wurde nicht richtig mit -m pdb
verwendet.
Recommended Posts