如何查找TCL代码中的错误
我正在学习 TCL,想知道如何找出代码中的错误。我的意思是哪一行发生了错误,或者我该如何调试它。
以下是我正在尝试的代码:
proc ldelete {list value}{
set ix [lsearch -exact $list $value]
if{$ix >=0}{
return [lreplace $list $ix $ix]
} else {
return $list
}
}
以下是我收到的错误:
extra characters after close-brace
我将感谢您的帮助。
谢谢 阿迪亚
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这里需要一个空格
proc ldelete {list value}{
list value} {
proc ldelete {list value} {
和这里if{$ix >=0}{
if{$ix >=0}{proc ldelete { 代码> <代码>if{$ix >=0} {
You need a space here
proc ldelete {list value}{
proc ldelete {list value} {
and here
if{$ix >=0}{
if{$ix >=0} {
尝试查看全局变量
errorInfo
的内容相关文档链接:http://www.tcl.tk/man/tcl8.5/TclCmd/return.htm 和 http://wiki.tcl.tk/1645
Try looking at the contents of the global variable
errorInfo
Relevant documentation links: http://www.tcl.tk/man/tcl8.5/TclCmd/return.htm and http://wiki.tcl.tk/1645
如果您购买了 ActiveState 出售的 Tcl Dev Kit 副本,它包含一个名为“tclchecker”的工具,可以检查许多不同类型的可能问题。
除了 frink 之外,还有一个免费的替代工具,名为 nagelfar。它提供了各种静态检查。
If you purchase a copy of the Tcl Dev Kit sold by ActiveState, it includes a tool called "tclchecker" which checks for many different kinds of possible problems.
A free alternative, besides frink, is a tool called nagelfar. It provides a variety of static checks.
我使用一个名为“frink”的静态检查器。谷歌一下,你就会找到它。
更新:
是的,frink 发现了我错过的许多错误。给我一个尝试。
I use a static checker called 'frink'. Google for it and you will find it.
UPDATE:
Yes, frink finds many errors I missed. Give me a try.
如果您这样运行:
tcl foo.tcl
那么您应该会收到一条错误消息,告诉您错误位于第 1 行。(问题是右大括号和大括号之间缺少空格) 作为一般规则,如果您以交互方式工作,则
通常可以在 errorInfo 中找到有用的消息(例如堆栈跟踪),因此这通常很有帮助:
% put $errorInfo
If you are running this thus:
tcl foo.tcl
then you should be getting an error message telling you that the error is on line 1. (The problem is the lack of a space between the close brace and the open brace.)
As a general rule, if you are working interactively, useful messages (eg the stack trace) are often found in errorInfo, so this is often helpful:
% puts $errorInfo