@@ -3,22 +3,26 @@ \section{Standard Module \module{traceback}}
3
3
\stmodindex {traceback}
4
4
5
5
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
10
10
`` wrapper'' around the interpreter.
11
11
12
12
The module uses traceback objects --- this is the object type
13
13
that 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()}.
15
16
\obindex {traceback}
16
17
17
18
The module defines the following functions:
18
19
19
- \begin {funcdesc }{print_tb}{traceback\optional {, limit}}
20
+ \begin {funcdesc }{print_tb}{traceback\optional {, limit\optional {, file} }}
20
21
Print up to \var {limit} stack trace entries from \var {traceback}. If
21
22
\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.
22
26
\end {funcdesc }
23
27
24
28
\begin {funcdesc }{extract_tb}{traceback\optional {, limit}}
@@ -33,9 +37,11 @@ \section{Standard Module \module{traceback}}
33
37
\code {None}.
34
38
\end {funcdesc }
35
39
36
- \begin {funcdesc }{print_exception}{type, value, traceback\optional {, limit}}
40
+ \begin {funcdesc }{print_exception}{type, value,
41
+ traceback\optional {, limit\optional {, file}}}
37
42
Print 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
39
45
following ways: (1) if \var {traceback} is not \code {None}, it prints a
40
46
header \samp {Traceback (innermost last):}; (2) it prints the
41
47
exception \var {type} and \var {value} after the stack trace; (3) if
@@ -44,12 +50,105 @@ \section{Standard Module \module{traceback}}
44
50
caret indicating the approximate position of the error.
45
51
\end {funcdesc }
46
52
47
- \begin {funcdesc }{print_exc}{\optional {limit}}
53
+ \begin {funcdesc }{print_exc}{\optional {limit\optional {, file} }}
48
54
This 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.)
50
58
\end {funcdesc }
51
59
52
- \begin {funcdesc }{print_last}{\optional {limit}}
60
+ \begin {funcdesc }{print_last}{\optional {limit\optional {, file} }}
53
61
This 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 {)}'.
55
64
\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