Python | Jupyter> Débogage post-mortem | pdb.post_mortem ()

Connexes: [Python] Débogage très utile

Débogage post-mortem avec Jupyter

@ 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.

Débogage post-mortem de Python

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

Python | Jupyter> Débogage post-mortem | pdb.post_mortem ()
débogage python DS
Conseils de débogage Python
[Python] Débogage super utile
3 astuces du notebook Jupyter (Python)
[Python] Débogage plus efficace!
Essayez d'exécuter Python avec Try Jupyter
Compréhension complète du débogage Python
notebook jupyter dans l'environnement venv python3.8
Paramètres d'extrait de code pour le notebook jupyter python
Mémo Python Anaconda x Jupyter Notebook
Générer le notebook Jupyter ".ipynb" en Python
Bloc-notes Jupyter facile à utiliser (Python3.5)