Wie kann man die Stapelspur debuggen, die eine nachfolgende Ausnahme in Python verursacht?Python

Python-Programme
Anonymous
 Wie kann man die Stapelspur debuggen, die eine nachfolgende Ausnahme in Python verursacht?

Post by Anonymous »

Python (und Ipython) verfügt über eine sehr leistungsstarke Debugging-Funktionen nach dem Mortem und ermöglicht eine variable Inspektion und Befehlsausführung in jedem Bereich im Traceback. Die Befehle auf/down -Debugger ermöglichen das Ändern des Frame für die Stapelverfolgung der endgültigen Ausnahme, aber was ist mit der __cause __ dieser Ausnahme, wie durch die Erhöhung ... von ... syntax?
definiert

Code: Select all

Python 3.7.6 (default, Jan  8 2020, 13:42:34)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.11.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: def foo():
...:     bab = 42
...:     raise TypeError
...:

In [2]: try:
...:     foo()
...: except TypeError as err:
...:     barz = 5
...:     raise ValueError from err
...:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in 
1 try:
----> 2     foo()
3 except TypeError as err:

 in foo()
2     bab = 42
----> 3     raise TypeError
4

TypeError:

The above exception was the direct cause of the following exception:

ValueError                                Traceback (most recent call last)
 in 
3 except TypeError as err:
4     barz = 5
----> 5     raise ValueError from err
6

ValueError:

In [3]: %debug
> (5)()
2     foo()
3 except TypeError as err:
4     barz = 5
----> 5     raise ValueError from err
6

ipdb> barz
5
ipdb> bab
*** NameError: name 'bab' is not defined
ipdb> down
*** Newest frame
ipdb> up
*** Oldest frame
Gibt es eine Möglichkeit, aus dem Debugger auf Bab zugreifen zu können? Das obige kann auch reproduziert werden, indem der Code in ein Skript testrerr.py und ausgeführt wird und Python -m PDB testerr.py und fortlaufend ausgeführt wird. Nach dem Fehler heißt es < /p>

Code: Select all

Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
und gibt einen Debugger an derselben Stelle.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post