---- '''Package''' package provide Pstack 1.0 # -------------------------------------------------- # This package prints the call stack for a procudure # # To trace a proc place $Pstack::print somewhere in the # proceedure. Use Pstack::printON & Pstack::printOFF # to turn printing on and off from other parts of the application. # -------------------------------------------------- namespace eval Pstack { variable print set print Pstack::OFF } # ------------------------------ # turn traccing 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 " " } }