在Tcl中利用info level命令打印调用栈

风行水上 @ 2012-04-27 16:34:24
标签:

    利用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数。如果是在最顶层,则返回0
    • info level $n返回从最顶层数起第n层的proc命令名和参数
    标签:

      分享到:
      comments powered by Disqus

      25/29ms