Как найти ошибку в коде TCL - PullRequest
0 голосов
/ 16 июня 2010

Я изучаю 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

Буду признателен за помощь.

Спасибо адитйа

Ответы [ 5 ]

5 голосов
/ 16 июня 2010

Если вы выполняете это так:

tcl foo.tcl

тогда вы должны получить сообщение об ошибке, сообщающее, что ошибка находится в строке 1. (Проблема заключается в отсутствии пробела между закрывающей скобкой и открытой скобкой.)

Как правило, если вы работаете в интерактивном режиме, полезные сообщения (например, трассировка стека) часто находятся в errorInfo, поэтому это часто полезно:

% puts $errorInfo

1 голос
/ 07 июля 2010

Если вы покупаете копию Tcl Dev Kit, продаваемого ActiveState, он включает в себя инструмент под названием «tclchecker», который проверяет множество различных возможных проблем.

Бесплатной альтернативой, кроме frink, является инструмент под названием nagelfar . Он предоставляет различные статические проверки.

1 голос
/ 16 июня 2010

Попробуйте посмотреть содержимое глобальной переменной errorInfo

puts $::errorInfo

Соответствующие ссылки на документацию: http://www.tcl.tk/man/tcl8.5/TclCmd/return.htm и http://wiki.tcl.tk/1645

1 голос
/ 16 июня 2010

Вам нужен пробел здесь

proc ldelete {list value}{

proc ldelete {list value} {

и здесь

if{$ix >=0}{

if{$ix >=0} {

0 голосов
/ 16 июня 2010

Я использую статическую проверку под названием «frink».Google для этого, и вы найдете это.

ОБНОВЛЕНИЕ: Да, Frink находит много ошибок, которые я пропустил.Дайте мне попытку.

...