Posted to tcl by dgp at Thu Aug 08 14:58:48 GMT 2013view pretty
% proc report args { set frame [info frame] set i 1 while {$i <= $frame} { puts "FRAME $i: [info frame $i]" incr i } catch error m o puts "STACK: [dict get $o -errorstack]" } % proc demo {} {uplevel 1 report} % demo FRAME 1: type eval line 1 cmd demo level 1 FRAME 2: type proc line 1 cmd {uplevel 1 report} proc ::demo FRAME 3: type eval line 1 cmd report proc ::demo FRAME 4: type proc line 5 cmd {info frame $i} proc ::report level 0 STACK: INNER {invokeStk1 error} CALL report % namespace unknown report report % nosuch FRAME 1: type eval line 1 cmd nosuch level 1 FRAME 2: type proc line 5 cmd {info frame $i} proc ::report level 0 STACK: INNER {invokeStk1 error} CALL {report nosuch} The -errorstack doesn't hide away the command [report] in the history. Strange (and something of a shame) there's not a common foundation.