⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tracecmd.3

📁 tcl是工具命令语言
💻 3
字号:
'\"'\" Copyright (c) 2002 Donal K. Fellows'\"'\" See the file "license.terms" for information on usage and redistribution'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.'\" '\" CVS: @(#) $Id: TraceCmd.3,v 1.5 2002/07/01 18:24:39 jenglish Exp $'\" .so man.macros.TH Tcl_TraceCommand 3 7.4 Tcl "Tcl Library Procedures".BS.SH NAMETcl_CommandTraceInfo, Tcl_TraceCommand, Tcl_UntraceCommand \- monitor renames and deletes of a command.SH SYNOPSIS.nf\fB#include <tcl.h>\fR.spClientData\fBTcl_CommandTraceInfo(\fIinterp, cmdName, flags, proc, prevClientData\fB)\fR.spint\fBTcl_TraceCommand(\fIinterp, cmdName, flags, proc, clientData\fB)\fR.spvoid\fBTcl_UntraceCommand(\fIinterp, cmdName, flags, proc, clientData\fB)\fR.SH ARGUMENTS.AS Tcl_CommandTraceProc prevClientData.AP Tcl_Interp *interp inInterpreter containing the command..AP "CONST char" *cmdName inName of command..AP int flags inOR-ed collection of the value TCL_TRACE_RENAME and TCL_TRACE_DELETE..AP Tcl_CommandTraceProc *proc inProcedure to call when specified operations occur to \fIcmdName\fR..AP ClientData clientData inArbitrary argument to pass to \fIproc\fR..AP ClientData prevClientData inIf non-NULL, gives last value returned by \fBTcl_CommandTraceInfo\fR,so this call will return information about next trace.  If NULL, thiscall will return information about first trace..BE.SH DESCRIPTION.PP\fBTcl_TraceCommand\fR allows a C procedure to monitor operationsperformed on a Tcl command, so that the C procedure is invokedwhenever the command is renamed or deleted.  If the trace is createdsuccessfully then \fBTcl_TraceCommand\fR returns TCL_OK.  If an erroroccurred (e.g. \fIcmdName\fR specifies a non-existent command) thenTCL_ERROR is returned and an error message is left in theinterpreter's result..PPThe \fIflags\fR argument to \fBTcl_TraceCommand\fR indicates when thetrace procedure is to be invoked.  It consists of an OR-ed combinationof any of the following values:.TP\fBTCL_TRACE_RENAME\fRInvoke \fIproc\fR whenever the command is renamed..TP\fBTCL_TRACE_DELETE\fRInvoke \fIproc\fR when the command is deleted..PPWhenever one of the specified operations occurs to the command,\fIproc\fR will be invoked.  It should have arguments and result thatmatch the type \fBTcl_CommandTraceProc\fR:.CStypedef void Tcl_CommandTraceProc(	ClientData \fIclientData\fR,        Tcl_Interp *\fIinterp\fR,	CONST char *\fIoldName\fR,	CONST char *\fInewName\fR,        int \fIflags\fR);.CEThe \fIclientData\fR and \fIinterp\fR parameters will have the samevalues as those passed to \fBTcl_TraceCommand\fR when the trace wascreated.  \fIClientData\fR typically points to an application-specificdata structure that describes what to do when \fIproc\fR is invoked.\fIOldName\fR gives the name of the command being renamed, and\fInewName\fR gives the name that the command is being renamed to (oran empty string or NULL when the command is being deleted.)\fIFlags\fR is an OR-ed combination of bits potentially providingseveral pieces of information.  One of the bits TCL_TRACE_RENAME andTCL_TRACE_DELETE will be set in \fIflags\fR to indicate whichoperation is being performed on the command.  The bitTCL_TRACE_DESTROYED will be set in \fIflags\fR if the trace is aboutto be destroyed; this information may be useful to \fIproc\fR so thatit can clean up its own internal data structures (see the sectionTCL_TRACE_DESTROYED below for more details).  Lastly, the bitTCL_INTERP_DESTROYED will be set if the entire interpreter is beingdestroyed.  When this bit is set, \fIproc\fR must be especiallycareful in the things it does (see the section TCL_INTERP_DESTROYEDbelow)..PP\fBTcl_UntraceCommand\fR may be used to remove a trace.  If thecommand specified by \fIinterp\fR, \fIcmdName\fR, and \fIflags\fR hasa trace set with \fIflags\fR, \fIproc\fR, and \fIclientData\fR, thenthe corresponding trace is removed.  If no such trace exists, then thecall to \fBTcl_UntraceCommand\fR has no effect.  The same bits arevalid for \fIflags\fR as for calls to \fBTcl_TraceCommand\fR..PP\fBTcl_CommandTraceInfo\fR may be used to retrieve information abouttraces set on a given command.The return value from \fBTcl_CommandTraceInfo\fR is the \fIclientData\fRassociated with a particular trace.The trace must be on the command specified by the \fIinterp\fR,\fIcmdName\fR, and \fIflags\fR arguments (note that currently theflags are ignored; \fIflags\fR should be set to 0 for futurecompatibility) and its trace procedure must the same as the \fIproc\fRargument.If the \fIprevClientData\fR argument is NULL then the returnvalue corresponds to the first (most recently created) matchingtrace, or NULL if there are no matching traces.If the \fIprevClientData\fR argument isn't NULL, then it shouldbe the return value from a previous call to \fBTcl_CommandTraceInfo\fR.In this case, the new return value will correspond to the nextmatching trace after the one whose \fIclientData\fR matches\fIprevClientData\fR, or NULL if no trace matches \fIprevClientData\fRor if there are no more matching traces after it.This mechanism makes it possible to step through all of thetraces for a given command that have the same \fIproc\fR..SH "CALLING COMMANDS DURING TRACES".PPDuring rename traces, the command being renamed is visible with bothnames simultaneously, and the command still exists during deletetraces (if TCL_INTERP_DESTROYED is not set).  However, there is nomechanism for signaling that an error occurred in a trace procedure,so great care should be taken that errors do not get silently lost..SH "MULTIPLE TRACES".PPIt is possible for multiple traces to exist on the same command.When this happens, all of the trace procedures will be invoked on eachaccess, in order from most-recently-created to least-recently-created.Attempts to delete the command during a delete trace will failsilently, since the command is already scheduled for deletion anyway.If the command being renamed is renamed by one of its rename traces,that renaming takes precedence over the one that triggered the traceand the collection of traces will not be reexecuted; if several tracesrename the command, the last renaming takes precedence..SH "TCL_TRACE_DESTROYED FLAG".PPIn a delete callback to \fIproc\fR, the TCL_TRACE_DESTROYED bitis set in \fIflags\fR.'\" Perhaps need some more comments here? - DKF.SH "TCL_INTERP_DESTROYED".PPWhen an interpreter is destroyed, unset traces are called forall of its commands.The TCL_INTERP_DESTROYED bit will be set in the \fIflags\fRargument passed to the trace procedures.Trace procedures must be extremely careful in what they do ifthe TCL_INTERP_DESTROYED bit is set.It is not safe for the procedures to invoke any Tcl procedureson the interpreter, since its state is partially deleted.All that trace procedures should do under these circumstances isto clean up and free their own internal data structures..SH BUGS.PPTcl doesn't do any error checking to prevent trace proceduresfrom misusing the interpreter during traces with TCL_INTERP_DESTROYEDset..SH KEYWORDSclientData, trace, command

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -