'''Example''' ---- '''Package''' ---- package provide Pstack 1.0 # -------------------------------------------------- # This package prints the call order for a set # of user selected procedures. # # Place $Pstack::print at the beginning of all # the procedures you are interested in # tracing. # # Turn tracing on and off with the # Pstack::printON & Pstack::printOFF commands. # -------------------------------------------------- namespace eval Pstack { variable print set print Pstack::OFF } # ------------------------------ # turn tracing on/off proc Pstack::printON { } { variable print set print Pstack::ON } proc Pstack::printOFF { } { variable print set print Pstack::OFF } # ------------------------------ # no output proc Pstack::OFF { } { } # ------------------------------ # print proc name and arguments proc Pstack::ON { } { puts "---" set indent "" set up_level [expr [info level]-1] for {set i 1} {$i<=[expr [info level]-1]} {incr i} { set argList [info level ${i}] puts stderr "${indent}[lindex $argList 0] {[lrange $argList 1 end]}" append indent " " } }