traceback --- 列印或取得堆疊回溯 (stack traceback)¶
原始碼:Lib/traceback.py
This module provides a standard interface to extract, format and print stack traces of Python programs. It is more flexible than the interpreter's default traceback display, and therefore makes it possible to configure certain aspects of the output. Finally, it contains a utility for capturing enough information about an exception to print it later, without the need to save a reference to the actual exception. Since exceptions can be the roots of large objects graph, this utility can significantly improve memory management.
The module uses traceback objects --- these are
objects of type types.TracebackType,
which are assigned to the __traceback__ field of
BaseException instances.
也參考
faulthandler模組Used to dump Python tracebacks explicitly, on a fault, after a timeout, or on a user signal.
pdb模組Interactive source code debugger for Python programs.
The module's API can be divided into two parts:
Module-level functions offering basic functionality, which are useful for interactive inspection of exceptions and tracebacks.
TracebackExceptionclass and its helper classesStackSummaryandFrameSummary. These offer both more flexibility in the output generated and the ability to store the information necessary for later formatting without holding references to actual exception and traceback objects.
在 3.13 版被加入: Output is colorized by default and can be controlled using environment variables.
Module-Level Functions¶
- traceback.print_tb(tb, limit=None, file=None)¶
Print up to limit stack trace entries from traceback object tb (starting from the caller's frame) if limit is positive. Otherwise, print the last
abs(limit)entries. If limit is omitted orNone, all entries are printed. If file is omitted orNone, the output goes tosys.stderr; otherwise it should be an open file or file-like object to receive the output.備註
The meaning of the limit parameter is different than the meaning of
sys.tracebacklimit. A negative limit value corresponds to a positive value ofsys.tracebacklimit, whereas the behaviour of a positive limit value cannot be achieved withsys.tracebacklimit.在 3.5 版的變更: 新增負數 limit 的支援。
- traceback.print_exception(exc, /, [value, tb, ]limit=None, file=None, chain=True)¶
Print exception information and stack trace entries from traceback object tb to file. This differs from
print_tb()in the following ways:if tb is not
None, it prints a headerTraceback (most recent call last):it prints the exception type and value after the stack trace
if type(value) is
SyntaxErrorand value has the appropriate format, it prints the line where the syntax error occurred with a caret indicating the approximate position of the error.
Since Python 3.10, instead of passing value and tb, an exception object can be passed as the first argument. If value and tb are provided, the first argument is ignored in order to provide backwards compatibility.
The optional limit argument has the same meaning as for
print_tb(). If chain is true (the default), then chained exceptions (the__cause__or__context__attributes of the exception) will be printed as well, like the interpreter itself does when printing an unhandled exception.在 3.5 版的變更: The etype argument is ignored and inferred from the type of value.
在 3.10 版的變更: The etype parameter has been renamed to exc and is now positional-only.
- traceback.print_exc(limit=None, file=None, chain=True)¶
This is a shorthand for
print_exception(sys.exception(), limit=limit, file=file, chain=chain).
- traceback.print_last(limit=None, file=None, chain=True)¶
This is a shorthand for
print_exception(sys.last_exc, limit=limit, file=file, chain=chain). In general it will work only after an exception has reached an interactive prompt (seesys.last_exc).
- traceback.print_stack(f=None, limit=None, file=None)¶
Print up to limit stack trace entries (starting from the invocation point) if limit is positive. Otherwise, print the last
abs(limit)entries. If limit is omitted orNone, all entries are printed. The optional f argument can be used to specify an alternate stack frame to start. The optional file argument has the same meaning as forprint_tb().在 3.5 版的變更: 新增負數 limit 的支援。
- traceback.extract_tb(tb, limit=None)¶
Return a
StackSummaryobject representing a list of "pre-processed" stack trace entries extracted from the traceback object tb. It is useful for alternate formatting of stack traces. The optional limit argument has the same meaning as forprint_tb(). A "pre-processed" stack trace entry is aFrameSummaryobject containing attributesfilename,lineno,name, andlinerepresenting the information that is usually printed for a stack trace.
- traceback.extract_stack(f=None, limit=None)¶
Extract the raw traceback from the current stack frame. The return value has the same format as for
extract_tb(). The optional f and limit arguments have the same meaning as forprint_stack().
- traceback.print_list(extracted_list, file=None)¶
Print the list of tuples as returned by
extract_tb()orextract_stack()as a formatted stack trace to the given file. If file isNone, the output is written tosys.stderr.
- traceback.format_list(extracted_list)¶
Given a list of tuples or
FrameSummaryobjects as returned byextract_tb()orextract_stack(), return a list of strings ready for printing. Each string in the resulting list corresponds to the item with the same index in the argument list. Each string ends in a newline; the strings may contain internal newlines as well, for those items whose source text line is notNone.
- traceback.format_exception_only(exc, /, [value, ]*, show_group=False)¶
Format the exception part of a traceback using an exception value such as given by
sys.last_value. The return value is a list of strings, each ending in a newline. The list contains the exception's message, which is normally a single string; however, forSyntaxErrorexceptions, it contains several lines that (when printed) display detailed information about where the syntax error occurred. Following the message, the list contains the exception'snotes.Since Python 3.10, instead of passing value, an exception object can be passed as the first argument. If value is provided, the first argument is ignored in order to provide backwards compatibility.
When show_group is
True, and the exception is an instance ofBaseExceptionGroup, the nested exceptions are included as well, recursively, with indentation relative to their nesting depth.在 3.10 版的變更: The etype parameter has been renamed to exc and is now positional-only.
在 3.11 版的變更: The returned list now includes any
notesattached to the exception.在 3.13 版的變更: 新增 show_group 參數。
- traceback.format_exception(exc, /, [value, tb, ]limit=None, chain=True)¶
Format a stack trace and the exception information. The arguments have the same meaning as the corresponding arguments to
print_exception(). The return value is a list of strings, each ending in a newline and some containing internal newlines. When these lines are concatenated and printed, exactly the same text is printed as doesprint_exception().在 3.5 版的變更: The