This module provides a standard interface to extract, format and print stack traces of Python programs. It exactly mimics the behavior of the Python interpreter when it prints a stack trace. This is useful when you want to print stack traces under program control, e.g. in a ``wrapper'' around the interpreter.
The module uses traceback objects -- this is the object type
that is stored in the variables sys.exc_traceback
and
sys.last_traceback
and returned as the third item from
sys.exc_info().
The module defines the following functions:
None
, all entries are printed.
If file is omitted or None
, the output goes to
sys.stderr
; otherwise it should be an open file or file-like
object to receive the output.
None
, it prints a
header "Traceback (innermost last):"; (2) it prints the
exception type and value after the stack trace; (3) if
type is SyntaxError and value has the appropriate
format, it prints the line where the syntax error occurred with a
caret indicating the approximate position of the error.
print_exception(sys.exc_type,
sys.exc_value,
sys.exc_traceback,
limit,
file)
'. (In fact, it uses sys.exc_info()
to
retrieve the same information in a thread-safe way.)
print_exception(sys.last_type,
sys.last_value,
sys.last_traceback,
limit,
file)
'.
None
, all entries are extracted. A
``pre-processed'' stack trace entry is a quadruple (filename,
line number, function name, text) representing
the information that is usually printed for a stack trace. The
text is a string with leading and trailing whitespace
stripped; if the source is not available it is None
.
None
.
sys.last_type
and
sys.last_value
. The return value is a list of strings, each
ending in a newline. Normally, the list contains a single string;
however, for SyntaxError
exceptions, it contains several lines
that (when printed) display detailed information about where the
syntax error occurred. The message indicating which exception
occurred is the always last string in the list.
format_list(extract_tb(tb, limit))
.
format_list(extract_stack(f, limit))
.
tb.tb_lineno
field of the object, but when optimization is used (the -O flag) this
field is not updated correctly; this function calculates the correct
value.