特定コマンドが呼び出されたときにメッセージを取得するには、我々はenter
execution traceを使用することができます様々なアプローチ。
foreach p [info procs ::theNamespace::*] {
trace add execution $p enter {apply {{call op} {
puts "Called [lindex $call 0]"
}}
}
あなたはまた、特定のファイルが供給されたときに作成されるすべての手続きにそれを添付することができます:あなたは、その手続きあなたがに添付する名前空間を特定することができれば最も簡単です。これは、もう少し複雑です:あなたはかなりこのように複雑な(そして、それはまた、スクリプトによって、パッケージのロードによって作成された手順に影響を与える可能性があることに注意してください得ることができます
# Need to keep this script fragment so we can remove it again after the source
set tracer {apply {{proccall args} {
set cmd [uplevel 1 [list namespace origin [lindex $proccall 1]]]
trace add execution $cmd enter {apply {{call args} {
puts "Called [lindex $call 0]"
}}
}}
trace add execution ::proc leave $tracer
source /the/script.tcl
trace remove execution ::proc leave $tracer
、あなたはそれを停止することができますが、それはたくさんですより多くの仕事)。名前空間に現在あるすべてのプロシージャにアタッチするだけで簡単になります。
実行トレースは、少しの助けを借りてそのようなことをすることができます。主なトリッキーなビットは、トレースを添付するコマンドを決定することであり、正確なユースケースに依存します。 –