[Richard Suchenwirth] -- Of course, Tcl's most minimal debugger is ''puts''. But here is a cute little piece of code that offers some more debugging functionality (if you have stdin and stdout available - so not for ''wish'' on Windows): proc bp {{s {}}} { if ![info exists ::bp_skip] { set ::bp_skip [list] } elseif {[lsearch -exact $::bp_skip $s]>=0} return if [catch {info level -1} who] {set who ::} while 1 { puts -nonewline "$who/$s> "; flush stdout gets stdin line if {$line=="c"} {puts "continuing.."; break} if {$line=="i"} {set line "info locals"} catch {uplevel 1 $line} res puts $res } } The idea is that you insert breakpoints, calls to ''bp'', in critical code with an optional string argument (that may be used for distinguishing), like this: proc foo {args} { set x 1 bp 1 string toupper $args } foo bar and grill When execution reaches ''bp'', you get a prompt on stdout, giving the calling context and the bp string, like this: foo bar and grill/1> pwd /home/suchenwi/src/roi/test/mr foo bar and grill/1> i args x foo bar and grill/1> set args bar and grill foo bar and grill/1> set args lowercase lowercase foo bar and grill/1> c on which you can issue any Tcl command (especially getting or setting variable values in the scope of ''foo''), shorthand commands ("i" for "info locals"; add which others you need), and exit this micro-debugger with "c"(ontinue). Because you modified a local variable, foo's result will be LOWERCASE To turn off all breakpoints for an application, just say (maybe from inside ''bp''): proc bp args {} You can disable single breakpoints labeled e.g. ''x'' with the command lappend ::bp_skip x Stepping would be a bigger project, but in some situations a micro-debugger like this is good enough. See also [What debugging tools are available to a Tcl programmer] ---- Bits and pieces.. Here's a minimal variable watcher, that logs every change to the specified variables to stdout: proc watch {args} { foreach arg $args { uplevel 1 "trace var $arg w {puts $arg:\[set $arg\] ;#}" } } ---- [[Incidental remark: [Expect] builds in lots of interesting debugging capabilities.]] ---- [Arts and crafts of Tcl-Tk programming]