trace man page on BSDOS

Man page or keyword search:  
man Server   6284 pages
apropos Keyword Search (all sections)
Output format
BSDOS logo
[printable version]



trace(n)	      Tcl Built-In Commands		 trace(n)

_________________________________________________________________

NAME
       trace - Monitor variable accesses

SYNOPSIS
       trace option ?arg arg ...?
_________________________________________________________________

DESCRIPTION
       This  command  causes Tcl commands to be executed whenever
       certain operations are invoked.	At present, only variable
       tracing	is  implemented. The legal option's (which may be
       abbreviated) are:

       trace variable name ops command
	      Arrange for command to be executed  whenever  vari-
	      able  name  is accessed in one of the ways given by
	      ops.  Name may refer to a normal variable, an  ele-
	      ment  of	an array, or to an array as a whole (i.e.
	      name may be just the name	 of  an	 array,	 with  no
	      parenthesized  index).   If  name refers to a whole
	      array, then command is invoked whenever any element
	      of the array is manipulated.

	      Ops indicates which operations are of interest, and
	      consists of one or more of the following letters:

	      r	     Invoke  command  whenever	the  variable  is
		     read.

	      w	     Invoke  command  whenever	the  variable  is
		     written.

	      u	     Invoke  command  whenever	the  variable  is
		     unset.   Variables	 can  be unset explicitly
		     with the unset command, or	 implicitly  when
		     procedures	 return (all of their local vari-
		     ables are unset).	Variables are also  unset
		     when  interpreters	 are  deleted, but traces
		     will not be  invoked  because  there  is  no
		     interpreter in which to execute them.

	      When   the  trace	 triggers,  three  arguments  are
	      appended to command so that the actual  command  is
	      as follows:
		     command name1 name2 op
	      Name1  and  name2 give the name(s) for the variable
	      being accessed:  if the variable is a  scalar  then
	      name1  gives  the	 variable's  name and name2 is an
	      empty string; if the variable is an  array  element
	      then  name1  gives  the name of the array and name2
	      gives the index into the array; if an entire  array

Tcl								1

trace(n)	      Tcl Built-In Commands		 trace(n)

	      is  being	 deleted  and the trace was registered on
	      the overall array, rather than  a	 single	 element,
	      then  name1  gives  the  array name and name2 is an
	      empty string.  Name1 and name2 are not  necessarily
	      the  same	 as  the  name used in the trace variable
	      command:	the upvar command allows a  procedure  to
	      reference	 a  variable  under a different name.  Op
	      indicates what operation is being performed on  the
	      variable,	 and  is  one  of  r,  w, or u as defined
	      above.

	      Command executes in the same context  as	the  code
	      that invoked the traced operation:  if the variable
	      was accessed as part of a Tcl procedure, then  com-
	      mand  will  have access to the same local variables
	      as code in the procedure.	 This context may be dif-
	      ferent than the context in which the trace was cre-
	      ated.  If command invokes	 a  procedure  (which  it
	      normally	does) then the procedure will have to use
	      upvar or uplevel if it wishes to access the  traced
	      variable.	 Note also that name1 may not necessarily
	      be the same as the name used to set  the	trace  on
	      the  variable;  differences can occur if the access
	      is made through a variable defined with  the  upvar
	      command.

	      For  read	 and write traces, command can modify the
	      variable to affect the result of the traced  opera-
	      tion.   If command modifies the value of a variable
	      during a read or write trace, then  the  new  value
	      will be returned as the result of the traced opera-
	      tion.  The return value from   command  is  ignored
	      except that if it returns an error of any sort then
	      the traced operation also returns an error with the
	      same  error  message  returned by the trace command
	      (this mechanism can be used to implement	read-only
	      variables, for example).	For write traces, command
	      is invoked after	the  variable's	 value	has  been
	      changed; it can write a new value into the variable
	      to override the original	value  specified  in  the
	      write operation.	To implement read-only variables,
	      command will have to restore the old value  of  the
	      variable.

	      While  command  is executing during a read or write
	      trace, traces on the variable are temporarily  dis-
	      abled.  This means that reads and writes invoked by
	      command will occur directly, without invoking  com-
	      mand (or any other traces) again.	 However, if com-
	      mand unsets the variable then unset traces will  be
	      invoked.

	      When  an	unset  trace is invoked, the variable has
	      already  been  deleted:	it  will  appear  to   be

Tcl								2

trace(n)	      Tcl Built-In Commands		 trace(n)

	      undefined	 with  no  traces.   If	 an  unset occurs
	      because of a procedure return, then the trace  will
	      be invoked in the variable context of the procedure
	      being returned to:  the stack frame of the  return-
	      ing procedure will no longer exist.  Traces are not
	      disabled during unset traces, so if an unset  trace
	      command  creates a new trace and accesses the vari-
	      able, the trace will be  invoked.	  Any  errors  in
	      unset traces are ignored.

	      If there are multiple traces on a variable they are
	      invoked in order of  creation,  most-recent  first.
	      If  one  trace  returns  an  error, then no further
	      traces are invoked for the variable.  If	an  array
	      element  has a trace set, and there is also a trace
	      set on the array as a whole, the trace on the over-
	      all array is invoked before the one on the element.

	      Once created, the trace remains  in  effect  either
	      until  the  trace is removed with the trace vdelete
	      command described	 below,	 until	the  variable  is
	      unset, or until the interpreter is deleted.  Unset-
	      ting an element of array will remove any traces  on
	      that  element,  but  will	 not remove traces on the
	      overall array.

	      This command returns an empty string.

       trace vdelete name ops command
	      If there is a trace set on variable name	with  the
	      operations  and  command	given by ops and command,
	      then the trace is removed,  so  that  command  will
	      never again be invoked.  Returns an empty string.

       trace vinfo name
	      Returns  a  list	containing  one	 element for each
	      trace currently set on variable name.  Each element
	      of  the  list  is itself a list containing two ele-
	      ments, which are the  ops	 and  command  associated
	      with  the	 trace.	 If name doesn't exist or doesn't
	      have any traces set, then the result of the command
	      will be an empty string.

KEYWORDS
       read, variable, write, trace, unset

Tcl								3

[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server BSDOS

List of man pages available for BSDOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net