#

# Compute the current stack trace. Starting at level n above # the current procedure. Here, n defaults to 0, which will # include this procedure in the stack trace. # ce defaults to ¤t. # This only works with newer versions of Unicon! # <[generates the stacktrace from current call back to first # in the co-expression]> #

procedure buildStackTrace(n:0, # starting distance from this call ce # co-expr to trace stack in [¤t] ) local L /ce := ¤t L := []; n -:= 1 while pName := image(proc(ce, n+:=1)) do { fName := keyword("&file",ce,n) | "no file name" fLine := keyword("&line",ce,n) | "no line number" put(L, pName||" ["||fName||":"||fLine||"]" ) } return L end