tkinspect는, Tk로 작성된 애플리케이션을 디버깅하거나, 스크립트의 구조를 해석하는 툴입니다. Tcl/Tk8.0 이후와 incr Tcl/Tk3.0 이후의 버전으로 작성된 Tk 애플리케이션을 지원합니다. tkinspect는, Tk의 send 커맨드를 사용하여 Tk 애플리케이션의 프로시져나 변수등의 정보를 브라우즈 합니다. 애플리케이션 변수 변경의 추적 및 Tk 애플리케이션에 커맨드를 송/수신할 수 있습니다. tkinspect에서 표시 가능한 정보는 다음과 같습니다.
- Namespcae 리스트
- Proc 리스트
- Global 리스트
- Class 리스트
- Object 리스트
- Window 리스트
- Image 리스트
- Menu 리스트
- Canvas 리스트
- After 리스트
아래의 이미지는 Proc, Global, Window, Image 리스트를 표시한 화면입니다.
Tk 어플리케이션에서의 준비사항
tkinspect는 DDE, COM 혹은 Socket를 사용하여, Tk 애플리케이션을 해석하기 때문에, 조금의 절차가 필요합니다.
DDE를 사용할 경우
Tk 어플리케이션의 처음에 아래의 코드를 추가합니다.
package require dde
dde servername MyApplication
MyApplication과 같은 유니크(unique)한 이름을 줍니다.
COM을 사용할 경우
winsend 등의 확장 패키지를 별도로 준비하여, Tk 애플리케이션의 처음에 아래의 코드를 추가합니다.
package require winsend
winsend appname MyApplication
Socket을 사용할 경우
tkcon과 같은 콘솔 어플리케이션이 필요합니다. tkcon으로 아래와 같이 Tk 애플리케이션을 실행합니다. 통신 시 Tcllib의 comm 패키지를 사용합니다.
source MyApplication.tcl
package require comm
comm::comm self
=> 3802
comm::comm self 결과의 포트번호를 tkinspect의 File -> Connect to comm를 선택해 입력합니다.
tkinspect의 준비사항
tkinspect 상에서 File -> Select Interpreter(send) 메뉴에 표시된 Tk 어플리케이션을 선택하는 것으로 됩니다.
편리한 기능
Command:에 커맨드를 입력하고, Send Command 버튼을 누름으로서 Tk 애플리케이션에 커맨드를 송신하고 실행할 수 있습니다. 커맨드의 결과는 Value 윈도우에 표시됩니다. Globals 리스트에서 변수를 선택하고, Value 윈도우에서 그 변수값을 변경한 후에, Send Value 버튼을 누름으로써 변수값을 변경할 수 있습니다. Globals 메뉴의 Trace Variable를 선택한다면 변수를 추적할 수 있는 윈도우가 보이며, 변수값의 변화를 실시간으로 추적하여 보여줍니다.
Windows 리스트로부터 위젯을 선택하면, Tk 어플리케이션상의 위젯이 분홍색으로 표시됩니다.
최신버전의 소스코드를 올립니다.