2017-04-20 7 views
1

사용자 정의 proc 호출을 Tcl 파일에 나열 할 수있는 방법이 있습니까? ?tcl에 호출 된 procs 나열

TCL 파일이 있는데, 해당 파일에서 호출 한 모든 procs를 나열하고 싶습니다.

trace add execution $theCommand enter {apply {{call op} { 
    puts "Called [lindex $call 0]" 
}} 

선택하는 것을 추적하기 위해 부착 명령을하는, 우리가 사용할 수 있습니다

감사 keerthan

+0

실행 추적은 약간의 도움으로 이런 종류의 작업을 수행 할 수 있습니다. 주된 까다로운 부분은 추적을 첨부 할 명령을 결정하는 것이며 정확한 사용 사례에 따라 다릅니다. –

답변

2

특정 명령이 호출 될 때 메시지를 얻으려면, 우리는 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 

, 당신은 그것을 중지 할 수 있습니다,하지만 많은입니다 더 많은 일). 현재 네임 스페이스에있는 모든 프로 시저에 연결하는 것이 더 간단합니다.

+0

실행 추적은 중요한 성능 영향을 미칠 수 있습니다. –