debug_at_exit (Debugger)

    /*
     *   call-seq:
     *      Debugger.debug_at_exit { block } -> proc
     *
     *   Register <tt>at_exit</tt> hook which is escaped from the debugger.
     *   FOR INTERNAL USE ONLY.
     */
    static VALUE
    debug_at_exit(VALUE self)
    {
        VALUE proc;
        if (!rb_block_given_p())
            rb_raise(rb_eArgError, "called without a block");
        proc = rb_block_proc();
        rb_set_end_proc(debug_at_exit_i, proc);
        return proc;
    }