Note that as an exception is propagated down the chain of callers, an
``'exception'`` event is generated at each level.
+ For more fine-grained usage, it's possible to set a trace function by
+ assigning ``frame.f_trace = tracefunc`` explicitly, rather than relying on
+ it being set indirectly via the return value from an already installed
+ trace function. This is also required for activating the trace function on
+ the current frame, which :func:`settrace` doesn't do. Note that in order
+ for this to work, a global tracing function must have been installed
+ with :func:`settrace` in order to enable the runtime tracing machinery,
+ but it doesn't need to be the same tracing function (e.g. it could be a
+ low overhead tracing function that simply returns ``None`` to disable
+ itself immediately on each frame).
+
For more information on code and frame objects, refer to :ref:`types`.
.. audit-event:: sys.settrace "" sys.settrace