       cmdtrace level | on ?noeval? ?notruncate? ?procs? ?fileid?
       ?command cmd?

              Print  a  trace statement for all commands executed
              at depth of level or below (1 is  the  top  level).
              If  on  is specified, all commands at any level are
              traced.  The following options are available:

              noeval Causes arguments to be printed  unevaluated.
                     If  noeval  is  specified, the arguments are
                     printed before evaluation.  Otherwise,  they
                     are printed afterwards.

                     If  the command line is longer than 60 char
                     acters, it is truncated to 60 and a "..." is
                     postpended  to  indicate that there was more
                     output than was displayed.  If an  evaluated
                     argument  contains a space, the entire argu
                     ment  will  be  enclosed  inside  of  braces
                     (`{}') to allow the reader to visually sepa
                     rate the arguments from each other.

              notruncate
                     Disables  the  truncation  of  commands  and
                     evaluated arguments.

              procs  Enables the tracing of procedure calls only.
                     Commands that aren't procedure  calls  (i.e.
                     calls to commands that are written in C, C++
                     or some object-compatible language) are  not
                     traced  if  the  procs  option is specified.
                     This  option  is  particularly  useful   for
                     greatly  reducing  the  output  of  cmdtrace
                     while debugging.

              fileid This is a file id as returned  by  the  open
                     command.   If specified, then the trace out
                     put will be written to the file rather  than
                     stdout.   A stdio buffer flush is done after
                     every line is written so that the trace  may
                     be  monitored  externally  or provide useful
                     information  for  debugging  problems   that
                     cause core dumps.

              command cmd

                     Call  the specified command cmd on when each
                     command is executed instead of tracing to  a
                     file.   See the description of the function
                     ally below.  This option may not  be  speci
                     fied with a fileid.

              The  most  common  use of this command is to enable
              tracing to a file during  the  development.   If  a
              failure  occurs,  a  trace  is  then available when
              needed.  Command tracing will slow down the  execu
              tion  of code, so it should be removed when code is
              debugged.  The following command will enable  trac
              ing to a file for the remainder of the program:

                   cmdtrace on [open cmd.log w]

              The  command  option  causes a user specified trace
              command to be called  for  each  command  executed.
              The  command  will  have  the  following  arguments
              appended to it before evaluation:

              command
                     A string containing the text of the command,
                     before any argument substitution.

              argv   A  list  of  the  final argument information
                     that will be passed  to  the  command  after
                     command,  variable,  and backslash substitu
                     tion.

              evalLevel
                     The Tcl_Eval call level.

              procLevel
                     The procedure call level.

              The command should be constructed in such a  manner
              that it will work if additional arguments are added
              in the future.  It is suggested that the command be
              a proc with the final argument being args.

              Tracing  will  be  turned  off while the command is
              being executed.  The values of  the  errorInfo  and
              errorCode  variables  will be saved and restored on
              return from  the  command.   It  is  the  command's
              responsibility to preserve all other state.

              If an error occurs during the execution of command,
              an error message is dumped to stderr and the  trac
              ing  is  disabled.   The  underlying mechanism that
              this functionality is built  on  does  not  support
              returning an error to the interpreter.

       cmdtrace off
              Turn off all tracing.

       cmdtrace depth
              Returns the current maximum trace level, or zero if
              trace is disabled.
