특정 명령이 호출 될 때 메시지를 얻으려면, 우리는 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
, 당신은 그것을 중지 할 수 있습니다,하지만 많은입니다 더 많은 일). 현재 네임 스페이스에있는 모든 프로 시저에 연결하는 것이 더 간단합니다.
실행 추적은 약간의 도움으로 이런 종류의 작업을 수행 할 수 있습니다. 주된 까다로운 부분은 추적을 첨부 할 명령을 결정하는 것이며 정확한 사용 사례에 따라 다릅니다. –