PowerFX V1.0 運用説明書 - Microsoft(R) Windows(R) -
目次 索引 前ページ次ページ

第3章 TCLplus> 3.4 TCLplusコマンド

3.4.39 trace

機能:

指定した変数が読み込み、書き込み、削除された場合に、実行する処理を設定/解除します。
指定したコマンドが実行された場合に、実行する処理を設定/解除します。

形式:

trace add type target read proccmd
trace add type target write proccmd
trace add type target unset proccmd
trace add type target enter proccmd
trace add type target leave proccmd
trace remave rmtype rmtarget opt rmproccmd

オプション:

add
監視対象のコマンドまたは変数(target)がオプションで指定された状態になったときに実行する処理(proccmd)を設定します。

read
監視対象の変数(target)の値を参照したときにproccmdが実行されます。

write
監視対象の変数(target)に値が書き込まれたときにproccmdが実行されます。

unset
監視対象の変数(target)が削除されたときにproccmdが実行されます。

enter
監視対象のコマンド(target)が実行される前にproccmdが実行されます。

leave
監視対象のコマンド(target)が実行される後にproccmdが実行されます。

remove
addオプションで設定した処理(proccmd)を解除します。

パラメーター:

type
監視対象が変数である場合、variableを指定します。
監視対象がコマンドである場合、executionを指定します。

target
監視対象となる変数またはコマンドを指定します。

proccmd
監視対象がオプションで指定した状態になった場合に実行するプロシージを記述します。このプロシージャはprocコマンドにより作成します。このプロシージャは以下の引数により実行されます。

■オプションがread,write,unsetの場合

proccmd name1 name2 op

name1
監視対象の変数名

name2
通常はNULL。ただしname1に配列変数が指定された場合、要素名となる。

op
proccmdが実行される契機となった監視対象の状態 (read, writeまたはunset)

■オプションがenterの場合

proccmd cmdstring op

cmdstring
監視対象のコマンドとその引数の文字列

op
proccmdが実行される契機となった監視対象の状態(enter)

■オプションがleaveの場合

proccmd cmdstring code result op

cmdstirng
監視対象のコマンドとその引数の文字列

code
監視対象のコマンドが実行されたときの復帰値

result
監視対象のコマンドが正常に実行された場合は0
監視対象のコマンドの実行でエラーが発生した場合は1

op
proccmdが実行される契機となった監視対象の状態(leave)

rmtype
rmtarget
が変数である場合、variableを指定します。
rmtargetがコマンドである場合、executionを指定します。

rmtarget
設定を解除する監視対象(変数名またはコマンド名)を指定します。

opt
設定を解除する監視対象の契機(read,wirte,unset,enter,leave)を指定します。

rmproccmd
設定を解除するプロシージャ名を指定します。

復帰値:

なし

注意事項:

なし

例:

変数xの読込み、書き込み、削除をトレースします。

#トレース有効時の処理をコマンドとして定義
proc Vartrce { para1 para2 para3 } {
   upvar $para1 var
   switch $para3 {
      unset { puts stdout "変数$para1 が削除された" }
      write { puts stdout "変数$para1 が書き込まれた 値は$var" }
      read { puts stdout "変数$para1 が読み込まれた 値は$var" }
   }
}
#トレースを有効にする(無効の場合はコメントアウトする)
trace add variable x {unset write read} Vartrce
#トレースをとるスクリプト
set x 1
set y [expr $x + 1]
set x [expr $y + 1]
puts stdout "変数x の値は$x"
unset x

<実行結果>

変数x が書き込まれた 値は1
変数x が読み込まれた 値は1
変数x が書き込まれた 値は3
変数x が読み込まれた 値は3
変数x の値は3
変数x が削除された

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005