@@ -3,22 +3,26 @@ \section{Standard Module \module{traceback}}
33\stmodindex {traceback}
44
55
6- This module provides a standard interface to format and print stack
7- traces of Python programs. It exactly mimics the behavior of the
8- Python interpreter when it prints a stack trace. This is useful when
9- you want to print stack traces under program control, e.g. in a
6+ This module provides a standard interface to extract, format and print
7+ stack traces of Python programs. It exactly mimics the behavior of
8+ the Python interpreter when it prints a stack trace. This is useful
9+ when you want to print stack traces under program control, e.g. in a
1010`` wrapper'' around the interpreter.
1111
1212The module uses traceback objects --- this is the object type
1313that is stored in the variables \code {sys.exc_traceback} and
14- \code {sys.last_traceback}.
14+ \code {sys.last_traceback} and returned as the third item from
15+ \function {sys.exc_info()}.
1516\obindex {traceback}
1617
1718The module defines the following functions:
1819
19- \begin {funcdesc }{print_tb}{traceback\optional {, limit}}
20+ \begin {funcdesc }{print_tb}{traceback\optional {, limit\optional {, file} }}
2021Print up to \var {limit} stack trace entries from \var {traceback}. If
2122\var {limit} is omitted or \code {None}, all entries are printed.
23+ If \var {file} is omitted or \code {None}, the output goes to
24+ \code {sys.stderr}; otherwise it should be an open file or file-like
25+ object to receive the output.
2226\end {funcdesc }
2327
2428\begin {funcdesc }{extract_tb}{traceback\optional {, limit}}
@@ -33,9 +37,11 @@ \section{Standard Module \module{traceback}}
3337\code {None}.
3438\end {funcdesc }
3539
36- \begin {funcdesc }{print_exception}{type, value, traceback\optional {, limit}}
40+ \begin {funcdesc }{print_exception}{type, value,
41+ traceback\optional {, limit\optional {, file}}}
3742Print exception information and up to \var {limit} stack trace entries
38- from \var {traceback}. This differs from \function {print_tb()} in the
43+ from \var {traceback} to \var {file}.
44+ This differs from \function {print_tb()} in the
3945following ways: (1) if \var {traceback} is not \code {None}, it prints a
4046header \samp {Traceback (innermost last):}; (2) it prints the
4147exception \var {type} and \var {value} after the stack trace; (3) if
@@ -44,12 +50,105 @@ \section{Standard Module \module{traceback}}
4450caret indicating the approximate position of the error.
4551\end {funcdesc }
4652
47- \begin {funcdesc }{print_exc}{\optional {limit}}
53+ \begin {funcdesc }{print_exc}{\optional {limit\optional {, file} }}
4854This is a shorthand for `\code {print_exception(sys.exc_type,}
49- \code {sys.exc_value,} \code {sys.exc_traceback,} \var {limit}\code {)}'.
55+ \code {sys.exc_value,} \code {sys.exc_traceback,} \var {limit}\code {,}
56+ \var {file}\code {)}'. (In fact, it uses \code {sys.exc_info()} to
57+ retrieve the same information in a thread-safe way.)
5058\end {funcdesc }
5159
52- \begin {funcdesc }{print_last}{\optional {limit}}
60+ \begin {funcdesc }{print_last}{\optional {limit\optional {, file} }}
5361This is a shorthand for `\code {print_exception(sys.last_type,}
54- \code {sys.last_value,} \code {sys.last_traceback,} \var {limit}\code {)}'.
62+ \code {sys.last_value,} \code {sys.last_traceback,} \var {limit}\code {,}
63+ \var {file}\code {)}'.
5564\end {funcdesc }
65+
66+ \begin {funcdesc }{print_stack}{\optional {f\optional {, limit\optional {, file}}}}
67+ This function prints a stack trace from its invocation point. The
68+ optional \var {f} argument can be used to specify an alternate stack
69+ frame to start. The optional \var {limit} and \var {file} arguments have the
70+ same meaning as for \function {print_exception()}.
71+ \end {funcdesc }
72+
73+ \begin {funcdesc }{extract_tb}{tb\optional {, limit}}
74+ Return a list containing the raw (unformatted) traceback information
75+ extracted from the traceback object \var {tb}. The optional
76+ \var {limit} argument has the same meaning as for
77+ \function {print_exception()}. The items in the returned list are
78+ 4-tuples containing the following values: filename, line number,
79+ function name, and source text line. The source text line is stripped
80+ of leading and trailing whitespace; it is \code {None} when the source
81+ text file is unavailable.
82+ \end {funcdesc }
83+
84+ \begin {funcdesc }{extract_stack}{\optional {f\optional {, limit}}}
85+ Extract the raw traceback from the current stack frame. The return
86+ value has the same format as for \function {extract_tb()}. The
87+ optional \var {f} and \var {limit} arguments have the same meaning as
88+ for \function {print_stack()}.
89+ \end {funcdesc }
90+
91+ \begin {funcdesc }{format_list}{list}
92+ Given a list of tuples as returned by \function {extract_tb()} or
93+ \function {extract_stack()}, return a list of strings ready for
94+ printing. Each string in the resulting list corresponds to the item
95+ with the same index in the argument list. Each string ends in a
96+ newline; the strings may contain internal newlines as well, for those
97+ items whose source text line is not \code {None}.
98+ \end {funcdesc }
99+
100+ \begin {funcdesc }{format_exception_only}{type, value}
101+ Format the exception part of a traceback. The arguments are the
102+ exception type and value such as given by \code {sys.last_type} and
103+ \code {sys.last_value}. The return value is a list of strings, each
104+ ending in a newline. Normally, the list contains a single string;
105+ however, for \code {SyntaxError} exceptions, it contains several lines
106+ that (when printed) display detailed information about where the
107+ syntax error occurred. The message indicating which exception
108+ occurred is the always last string in the list.
109+ \end {funcdesc }
110+
111+ \begin {funcdesc }{format_exception}{type, value, tb\optional {, limit}}
112+ Format a stack trace and the exception information. The arguments
113+ have the same meaning as the corresponding arguments to
114+ \function {print_exception()}. The return value is a list of strings,
115+ each ending in a newline and some containing internal newlines. When
116+ these lines are contatenated and printed, exactly the same text is
117+ printed as does \function {print_exception()}.
118+ \end {funcdesc }
119+
120+ \begin {funcdesc }{format_tb}{tb\optional {, limit}}
121+ A shorthand for \code {format_list(extract_tb(\var {tb}, \var {limit}))}.
122+ \end {funcdesc }
123+
124+ \begin {funcdesc }{format_stack}{\optional {f\optional {, limit}}}
125+ A shorthand for \code {format_list(extract_stack(\var {f}, \var {limit}))}.
126+ \end {funcdesc }
127+
128+ \begin {funcdesc }{tb_lineno}{tb}
129+ This function returns the current line number set in the traceback
130+ object. This is normally the same as the \code {\var {tb}.tb_lineno}
131+ field of the object, but when optimization is used (the -O flag) this
132+ field is not updated correctly; this function calculates the correct
133+ value.
134+ \end {funcdesc }
135+
136+ A simple example follows:
137+
138+ \begin {verbatim }
139+ import sys, traceback
140+
141+ def run_user_code(envdir):
142+ source = raw_input(">>> ")
143+ try:
144+ exec source in envdir
145+ except:
146+ print "Exception in user code:"
147+ print '-'*60
148+ traceback.print_exc(file=sys.stdout)
149+ print '-'*60
150+
151+ envdir = {}
152+ while 1:
153+ run_user_code(envdir)
154+ \end {verbatim }
0 commit comments