\section{\module{cgitb} ---
         Traceback manager for CGI scripts}

\declaremodule{standard}{cgitb}
\modulesynopsis{Configurable traceback handler for CGI scripts.}
\moduleauthor{Ka-Ping Yee}{ping@lfw.org}
\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}

\versionadded{2.2}
\index{CGI!exceptions}
\index{CGI!tracebacks}
\index{exceptions!in CGI scripts}
\index{tracebacks!in CGI scripts}

The \module{cgitb} module provides a special exception handler for Python
scripts.  (Its name is a bit misleading.  It was originally designed to
display extensive traceback information in HTML for CGI scripts.  It was
later generalized to also display this information in plain text.)  After
this module is activated, if an uncaught exception occurs, a detailed,
formatted report will be displayed.  The report
includes a traceback showing excerpts of the source code for each level,
as well as the values of the arguments and local variables to currently
running functions, to help you debug the problem.  Optionally, you can
save this information to a file instead of sending it to the browser.

To enable this feature, simply add one line to the top of your CGI script:

\begin{verbatim}
import cgitb; cgitb.enable()
\end{verbatim}

The options to the \function{enable()} function control whether the
report is displayed in the browser and whether the report is logged
to a file for later analysis.


\begin{funcdesc}{enable}{\optional{display\optional{, logdir\optional{,
                         context\optional{, format}}}}}
  This function causes the \module{cgitb} module to take over the
  interpreter's default handling for exceptions by setting the
  value of \code{\refmodule{sys}.excepthook}.
  \withsubitem{(in module sys)}{\ttindex{excepthook()}}

  The optional argument \var{display} defaults to \code{1} and can be set
  to \code{0} to suppress sending the traceback to the browser.
  If the argument \var{logdir} is present, the traceback reports are
  written to files.  The value of \var{logdir} should be a directory
  where these files will be placed.
  The optional argument \var{context} is the number of lines of
  context to display around the current line of source code in the
  traceback; this defaults to \code{5}.
  If the optional argument \var{format} is \code{"html"}, the output is
  formatted as HTML.  Any other value forces plain text output.  The default
  value is \code{"html"}.
\end{funcdesc}

\begin{funcdesc}{handler}{\optional{info}}
  This function handles an exception using the default settings
  (that is, show a report in the browser, but don't log to a file).
  This can be used when you've caught an exception and want to
  report it using \module{cgitb}.  The optional \var{info} argument
  should be a 3-tuple containing an exception type, exception
  value, and traceback object, exactly like the tuple returned by
  \code{\refmodule{sys}.exc_info()}.  If the \var{info} argument
  is not supplied, the current exception is obtained from
  \code{\refmodule{sys}.exc_info()}.
\end{funcdesc}
