利用info level
命令可以获当前当前proc的level信息。据此可以得到当前proc的调用栈信息。
proc stacktrace {args} { for {set i 1 ; set n [info level]} {$i<$n} {incr i} { set indent [string repeat " " $i] puts [format "%d:%s%s" $i $indent [info level $i]] } } proc a {args} { b } proc b {args} { c } proc c {args} { d } proc d {args} { stacktrace } a 3 ### 输出结果: 1: a 3 2: b 3: c 4: d
info level
命令默认返回当前proc的level数。如果是在最顶层,则返回0info level $n
返回从最顶层数起第n层的proc命令名和参数