Connexes: [Python] Débogage très utile
@ Introduction à Python pour le calcul scientifique et technologique - Bases du développement, bibliothèques essentielles, accélération - par Kenji Nakahisa p80
Si vous utilisez IPython (ou Jupyter Notebook), un "débogage post-mortem" est possible. Dans le "débogage post-mortem", le débogage est exécuté après qu'une erreur se produit.
In [26]: run myscript.py
...
NameError: name 'z' is not defined
In [27]: debug
Commencer le débogage avec
Il semble que vous puissiez travailler dans le flux de l'exécution du programme et du débogage après avoir remarqué l'erreur.
https://docs.python.jp/3/library/pdb.html
Il prend également en charge le débogage post-mortem et peut être appelé sous le contrôle du programme.
Cela signifie-t-il que le débogage post-mortem est possible avec Python lui-même?
pdb.post_mortem()
https://docs.python.jp/3/library/pdb.html
pdb.post_mortem(traceback=None) Entre le débogage post-mortem de l'objet de trace donné.
J'ai trouvé ce qui suit: https://stackoverflow.com/questions/242485/starting-python-debugger-automatically-on-error
J'ai essayé.
Environnement d'exploitation
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
Il semble que pdb démarre lorsqu'une erreur se produit et que vous pouvez déboguer px, etc.
Il n'a pas été utilisé correctement avec -m pdb
.
Recommended Posts