Version 0 of recover

Updated 2019-03-22 12:22:01 by DDG

recover

function which allows you to debug your code more easily. Place it in your code to jump directly in a procedure or namespace for debugging. Works like the R recover function [L1 ].

proc recover {{err ""}} {
    if {$err ne ""} {
        puts "$err"
    } else {
        puts ""
    }
    uplevel 1 {
        set code ""
        puts -nonewline "\ndebug % "
        while {true} {
            gets stdin code
            if {[regexp {^Q\s*} $code]} {
                break
            }
            catch { eval $code } err
            if {$err ne "" } {
                puts "Error: $err"
            }
            puts -nonewline "\ndebug % "
        }
    }
}

Session example:

$ rlwrap tclsh
% source test.tcl
% debugMe2
wrong # args: should be "debugMe2 c"
% debugMe2 Hi
debug debugMe2
debug % puts [info vars]
c k code
debug % puts [array names k]
bc ab
debug % debug % Q
k(d)