Skip to content

Step out

Rodrigo Mesquita requested to merge wip/romes/step-out-5 into master
Implements support for stepping-out of a function (aka breaking right after returning from a function) in the interactive debugger.

It also introduces a GHCi command :stepout to step-out of a function
being debugged in the interpreter. The feature is described as:

    Stop at the first breakpoint immediately after returning from the current
    function scope.

    Known limitations: because a function tail-call does not push a stack
    frame, if step-out is used inside of a function that was tail-called,
    execution will not be returned to its caller, but rather its caller's
    first non-tail caller. In the following example:

    .. code-block:: none

    f = do
       a
       b <--- (1) set breakpoint then step in here
       c
    b = do
       ...
       d <--- (2) step-into this tail call
    d = do
       ...
       something <--- (3) step-out here
       ...

    Stepping-out will stop execution at the `c` invokation in `f`, rather than
    stopping at `b`.

Fixes #26042 (closed)

Merge request reports

Loading