move useful sys.settrace information to the function's documentation from the debugger

This commit is contained in:
Benjamin Peterson 2008-11-20 04:05:12 +00:00
parent 46cc6d1102
commit 5ab9c3badb
2 changed files with 50 additions and 65 deletions

View File

@ -351,68 +351,3 @@ run [*args* ...]
q(uit)
Quit from the debugger. The program being executed is aborted.
.. _debugger-hooks:
How It Works
============
Some changes were made to the interpreter:
* ``sys.settrace(func)`` sets the global trace function
* there can also a local trace function (see later)
Trace functions have three arguments: *frame*, *event*, and *arg*. *frame* is
the current stack frame. *event* is a string: ``'call'``, ``'line'``,
``'return'``, ``'exception'``, ``'c_call'``, ``'c_return'``, or
``'c_exception'``. *arg* depends on the event type.
The global trace function is invoked (with *event* set to ``'call'``) whenever a
new local scope is entered; it should return a reference to the local trace
function to be used that scope, or ``None`` if the scope shouldn't be traced.
The local trace function should return a reference to itself (or to another
function for further tracing in that scope), or ``None`` to turn off tracing in
that scope.
Instance methods are accepted (and very useful!) as trace functions.
The events have the following meaning:
``'call'``
A function is called (or some other code block entered). The global trace
function is called; *arg* is ``None``; the return value specifies the local
trace function.
``'line'``
The interpreter is about to execute a new line of code (sometimes multiple line
events on one line exist). The local trace function is called; *arg* is
``None``; the return value specifies the new local trace function.
``'return'``
A function (or other code block) is about to return. The local trace function
is called; *arg* is the value that will be returned. The trace function's
return value is ignored.
``'exception'``
An exception has occurred. The local trace function is called; *arg* is a
triple ``(exception, value, traceback)``; the return value specifies the new
local trace function.
``'c_call'``
A C function is about to be called. This may be an extension function or a
builtin. *arg* is the C function object.
``'c_return'``
A C function has returned. *arg* is ``None``.
``'c_exception'``
A C function has thrown an exception. *arg* is ``None``.
Note that as an exception is propagated down the chain of callers, an
``'exception'`` event is generated at each level.
For more information on code and frame objects, refer to :ref:`types`.

View File

@ -717,6 +717,56 @@ always available.
debugger to support multiple threads, it must be registered using
:func:`settrace` for each thread being debugged.
Trace functions should have three arguments: *frame*, *event*, and
*arg*. *frame* is the current stack frame. *event* is a string: ``'call'``,
``'line'``, ``'return'``, ``'exception'``, ``'c_call'``, ``'c_return'``, or
``'c_exception'``. *arg* depends on the event type.
The trace function is invoked (with *event* set to ``'call'``) whenever a new
local scope is entered; it should return a reference to a local trace
function to be used that scope, or ``None`` if the scope shouldn't be traced.
The local trace function should return a reference to itself (or to another
function for further tracing in that scope), or ``None`` to turn off tracing
in that scope.
The events have the following meaning:
``'call'``
A function is called (or some other code block entered). The
global trace function is called; *arg* is ``None``; the return value
specifies the local trace function.
``'line'``
The interpreter is about to execute a new line of code (sometimes multiple
line events on one line exist). The local trace function is called; *arg*
is ``None``; the return value specifies the new local trace function.
``'return'``
A function (or other code block) is about to return. The local trace
function is called; *arg* is the value that will be returned. The trace
function's return value is ignored.
``'exception'``
An exception has occurred. The local trace function is called; *arg* is a
tuple ``(exception, value, traceback)``; the return value specifies the
new local trace function.
``'c_call'``
A C function is about to be called. This may be an extension function or
a builtin. *arg* is the C function object.
``'c_return'``
A C function has returned. *arg* is ``None``.
``'c_exception'``
A C function has thrown an exception. *arg* is ``None``.
Note that as an exception is propagated down the chain of callers, an
``'exception'`` event is generated at each level.
For more information on code and frame objects, refer to :ref:`types`.
.. note::
The :func:`settrace` function is intended only for implementing debuggers,