next up previous contents index
Next: 10 The Python Profiler Up: 9 The Python Debugger Previous: 9.1 Debugger Commands

9.2 How It Works

Some changes were made to the interpreter:

Trace functions have three arguments: (frame, event, arg)

frame
is the current stack frame

event
is a string: 'call', 'line', 'return' or 'exception'

arg
is dependent on the event type

A trace function should return a new trace function or None. Class methods are accepted (and most useful!) as trace methods.

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 the argument list to the function; 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 in 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

Note that as an exception is propagated down the chain of callers, an 'exception' event is generated at each level.

Stack frame objects have the following read-only attributes:

f_code
the code object being executed
f_lineno
the current line number (-1 for 'call' events)
f_back
the stack frame of the caller, or None
f_locals
dictionary containing local name bindings
f_globals
dictionary containing global name bindings

Code objects have the following read-only attributes:

co_code
the code string
co_names
the list of names used by the code
co_consts
the list of (literal) constants used by the code
co_filename
the filename from which the code was compiled


next up previous contents index
Next: 10 The Python Profiler Up: 9 The Python Debugger Previous: 9.1 Debugger Commands

guido@cnri.reston.va.us