vm/instructions.rb
# [Operation]
#   Pauses execution and yields to the debugger
# [Format]
#   \yield_debugger
# [Stack Before]
#   * ...
# [Stack After]
#   * ...
# [Description]
#   Pauses virtual machine execution at the \yield_debugger instruction, and
#   yields control to the debugger on the debug channel. If no debugger is
#   registered, an error is raised.
# [Notes]
#   The \yield_debugger instruction is VM plumbing that exists to support
#   "full-speed" debugging. As such, it is not output by the compiler, but
#   rather is used by the debugger to replace an existing instruction at a
#   breakpoint. Prior to encountering a \yield_debugger instruction, the VM
#   will execute normally, i.e. at full speed, and not be slowed
#   significantly by the fact that a debugger is attached.
#
#   When the debugger is yielded to by this instruction, it can examine the
#   execution context, stack, etc, or replace the \yield_debugger instruction
#   with the original instruction at that point, and then step through the
#   code.
[Operation]
Pauses execution and yields to the debugger
[Format]
\yield_debugger
[Stack Before]

[Stack After]

[Description]
Pauses virtual machine execution at the \yield_debugger instruction, and
yields control to the debugger on the debug channel. If no debugger is
registered, an error is raised.
[Notes]
The \yield_debugger instruction is VM plumbing that exists to support
"full-speed" debugging. As such, it is not output by the compiler, but
rather is used by the debugger to replace an existing instruction at a
breakpoint. Prior to encountering a \yield_debugger instruction, the VM
will execute normally, i.e. at full speed, and not be slowed
significantly by the fact that a debugger is attached.

When the debugger is yielded to by this instruction, it can examine the
execution context, stack, etc, or replace the \yield_debugger instruction
with the original instruction at that point, and then step through the
code.
[ Operation ] Pauses execution and yields to the debugger [ Format ] \ yield_debugger [ Stack Before ] [ Stack After ] [ Description ] Pauses virtual machine execution at the \ yield_debugger instruction and yields control to the debugger on the debug channel . If no debugger is registered an error is raised . [ Notes ] The \ yield_debugger instruction is VM plumbing that exists to support " full - speed " debugging . As such it is not output by the compiler but rather is used by the debugger to replace an existing instruction at a breakpoint . Prior to encountering a \ yield_debugger instruction the VM will execute normally i . e . at full speed and not be slowed significantly by the fact that a debugger is attached . When the debugger is yielded to by this instruction it can examine the execution context stack etc or replace the \ yield_debugger instruction with the original instruction at that point and then step through the code .
def yield_debugger
    <<-CODE
    Helpers::yield_debugger(state, call_frame);
    CODE
  end
def yield_debugger <<-CODE 
    Helpers::yield_debugger(state, call_frame);
     CODE end
[Operation]
Pauses execution and yields to the debugger
[Format]
\yield_debugger
[Stack Before]
 ...
[Stack After]
 ...
[Description]
Pauses virtual machine execution at the \yield_debugger instruction, and
yields control to the debugger on the debug channel.
[ Operation ] Pauses execution and yields to the debugger [ Format ] \ yield_debugger [ Stack Before ] ... [ Stack After ] ... [ Description ] Pauses virtual machine execution at the \ yield_debugger instruction and yields control to the debugger on the debug channel .