利用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命令名和参数