如何在TCL代码中查找错误

如何在TCL代码中查找错误,tcl,syntax-error,Tcl,Syntax Error,我正在学习TCL,想知道如何找出代码中的错误。我的意思是什么行没有错误发生,或者我如何调试它 以下是我正在尝试的代码: proc ldelete {list value}{ set ix [lsearch -exact $list $value] if{$ix >=0}{ return [lreplace $list $ix $ix] } else { return $list } } 以下是我得到的错误: extra c

我正在学习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
我会感谢你的帮助

谢谢 再见

这里需要一个空间

proc ldelete{list value}{

proc ldelete{list value}{

这里呢

如果{$ix>=0}{


如果{$ix>=0}{

如果这样运行:

tcl foo.tcl

然后,您应该会收到一条错误消息,告诉您错误在第1行。(问题是闭合大括号和开放大括号之间缺少空间。)

作为一般规则,如果您以交互方式工作,则通常会在errorInfo中找到有用的消息(例如堆栈跟踪),因此这通常很有用:


%put$errorInfo

我使用一个名为“frink”的静态检查器。用谷歌搜索它,你就会找到它

puts $::errorInfo
更新:
是的,frink发现了许多我遗漏的错误。请让我试试。

尝试查看全局变量的内容
errorInfo

puts $::errorInfo

相关文档链接:和

如果您购买了ActiveState销售的Tcl开发工具包的副本,它包括一个名为“tclchecker”的工具,用于检查各种可能的问题


除了frink之外,还有一个免费的替代工具,名为。它提供了各种静态检查。

if
和条件之间也有一个空格。您好,谢谢您的建议,但是您是否使用frink查找Tcl中的错误请记住,Tcl中的所有命令都是这样的:
命令字…
其中单词是separ这就是为什么大括号周围的空格(将事物分组成单词)至关重要的原因。在谷歌搜索“大括号后面的额外字符”时,该页面首先出现: