一种调试PrimeTime中tcl脚本的办法

最近项目告一段落,空闲阅读PT的手册,尝试了一下文档中提到的调试tcl的软件TclPro。
虽然属于远程调试,但也支持本地调试,且不限于PrimeTime,任何tcl脚本运行的环境都可以。
下面是简单的步骤介绍,感兴趣的同学可以试一下。
是ICSOC的原创哦,喜欢的同学留个言鼓励一下吧:)


1、   下载
http://www.tcl.tk/software/tclpro/eval/1.4.html
最新的1.5版本的还没有windows和linux版本,但是有source code,会编译的同学可以尝试。
网页上有一个key number,记下备用。

2、   安装

把下载的包解压缩即可安装。安装的目标目录在安装过程中会提示键入,选择一个有写权限的目录即可,不需要root。
安装包中有个小问题需要改一下,在子目录unix下有个可执行文件uzpln86会提示找不到。原因是该文件虽然存在,但是动态调用了某老版本的c lib。
解决办法是,把uzpln86删除,建立一个同名的link到/usr/bin/unzip。
安装最后会提示输入key,把第一步给出的网页中的key输入即可。
假设安装的目标目录是/home/icsoc/TclPro1.4

3、   操作
3.1 启动debugger
prodebug &
会出来一个图形界面,点击file-new project,在debugging type中选择remote debugging,记住端口号。点ok。
点击view-connection status,此时connection statue应该是listening,listening port默认是2576,后面括号中会提示host地址,即debugger所在的主机。
3.2 启动PrimeTime
在PT中的设置有两种办法:
3.2.1 第一种是比较通用的,适合其它tcl环境
在pt_shell中执行下列三句
source /home/icsoc/TclPro1.4/linux-ix86/bin/prodebug.tcl
debugger_init 参数1 参数2
source 参数3
参数1是3.1提到的host地址,参数2是端口号
参数3是要debug的脚本路径
此时debugger的界面上会出现被调试脚本的源代码,跟普通的调试器的界面相似。
3.2.2 第二种是利用PT自身提供的命令
用这种方法需要在shell环境中预先设置一个环境变量:
setenv SNPS_TCLPRO_BIN /home/icsoc/TclPro1.4/linux-ix86/bin
然后再启动pt_shell,执行下面两句
package require snpsTclPro
debug_script 参数3 参数1 参数2
上面三个参数的含义同3.2.1中的描述,注意次序不同。
此时被调试脚本也会在debugger的界面上出现,等待你的调试命令。


到这里,大家就可以比较方便的在PT中调试复杂的tcl脚本了,并且可以比较方便的浏览PT中的参数的值。
当然了,还是有许多小问题的。比如重复debug四五次,就连不上debugger了,需要重启PrimeTime。
icsoc调试的一个脚本中含有foreach_in_collection,结果单步的时候死活进不去这个循环,都是直接跳过,似乎是把整个block当成一句了。
有知道的同学请不吝赐教。//bow



你可能感兴趣的:(工具)