Skip to content

Commit

Permalink
pythongh-102249: Expand sys.call_tracing documentation (python#102806)
Browse files Browse the repository at this point in the history
Co-authored-by: C.A.M. Gerlach <[email protected]>
  • Loading branch information
impact27 and CAM-Gerlach authored Oct 31, 2023
1 parent 5cc6c80 commit 2445673
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions Doc/library/sys.rst
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,11 @@ always available.

Call ``func(*args)``, while tracing is enabled. The tracing state is saved,
and restored afterwards. This is intended to be called from a debugger from
a checkpoint, to recursively debug some other code.
a checkpoint, to recursively debug or profile some other code.

Tracing is suspended while calling a tracing function set by
:func:`settrace` or :func:`setprofile` to avoid infinite recursion.
:func:`!call_tracing` enables explicit recursion of the tracing function.


.. data:: copyright
Expand Down Expand Up @@ -1473,13 +1477,16 @@ always available.
its return value is not used, so it can simply return ``None``. Error in the profile
function will cause itself unset.

.. note::
The same tracing mechanism is used for :func:`!setprofile` as :func:`settrace`.
To trace calls with :func:`!setprofile` inside a tracing function
(e.g. in a debugger breakpoint), see :func:`call_tracing`.

Profile functions should have three arguments: *frame*, *event*, and
*arg*. *frame* is the current stack frame. *event* is a string: ``'call'``,
``'return'``, ``'c_call'``, ``'c_return'``, or ``'c_exception'``. *arg* depends
on the event type.

.. audit-event:: sys.setprofile "" sys.setprofile

The events have the following meaning:

``'call'``
Expand All @@ -1501,6 +1508,9 @@ always available.
``'c_exception'``
A C function has raised an exception. *arg* is the C function object.

.. audit-event:: sys.setprofile "" sys.setprofile


.. function:: setrecursionlimit(limit)

Set the maximum depth of the Python interpreter stack to *limit*. This limit
Expand Down Expand Up @@ -1560,6 +1570,10 @@ always available.
If there is any error occurred in the trace function, it will be unset, just
like ``settrace(None)`` is called.

.. note::
Tracing is disabled while calling the trace function (e.g. a function set by
:func:`!settrace`). For recursive tracing see :func:`call_tracing`.

The events have the following meaning:

``'call'``
Expand Down

0 comments on commit 2445673

Please sign in to comment.