On facebook someone asked "how do you stop tcl script at a particular line" The quickest way, if you know the line is (immediately before that line): ====== error "I have to stop here" ====== But if you are looking for something a little more elegant, create a proc which tells Tcl to enter the event loop, and stay there until a condition has been satisfied. In this case we will assume our program is running from a command line, and we want to prompt the user to press any key to continue. ====== proc breakpoint {} { update set ::breakpoint 0 puts stdout "Press to continue" fileevent stdin readable {set ::breakpoint 1} vwait ::breakpoint } ====== For a tk based application: ====== proc breakpoint {} { update tk_messageBox -type ok -message "Press OK to continue" } ====== ---- [RS] 2014-05-08 My favorite breakpoint, which allows interacting with a running process like with a debugger, is this: ====== proc interact args { while 1 { puts -nonewline "$args% " flush stdout gets stdin cmd if {$cmd=="exit" || $cmd=="c"} break catch {uplevel 1 $cmd} res if [string length $res] {puts $res} } } ====== The zero or more arguments are displayed before the % prompt, so if you have more than one of these breakpoints, you can name them: interact here ... interact there or, to display in which proc the breakpoint is located: interact [info level 0] An earlier attempt is at [A minimal debugger]. <>debugging