Вывод ошибки Clisp REPL: как найти номер строки в файле, где произошла ошибка?

Я работаю через Land of Lisp, используя CLisp, пишу код в Vim с помощью Slimv, затем переключаюсь с помощью Alt-Tab в другое окно терминала и загружаю файл в REPL с помощью (load 'file.lisp), затем запускаю программы в РЕПЛ.

Когда я получаю сообщение об ошибке в REPL, есть ли способ определить, в какой строке файла file.lisp произошла ошибка? Я не вижу номеров строк, упомянутых явно в выводе ошибки REPL, есть ли другой способ?

Я нашел этот похожий вопрос, но единственный ответ говорит об использовании чего-то другого, кроме Clisp, например sbcl, allegro и т. Д .:

Как улучшить сообщения об ошибках clisp?

Спасибо!


person Kurtosis    schedule 24.05.2011    source источник


Ответы (3)


Простой ответ: просто скомпилируйте код, а не загружайте его в REPL: clisp -c file.lisp. Ошибка/предупреждения компилятора показывают номера строк. Отладьте его таким образом, а затем загрузите в REPL. Достаточно хорошо на данный момент.

person Kurtosis    schedule 25.05.2011

Если вы просто хотите узнать, в какой функции это произошло, вы можете использовать «:bt» в приглашении REPL, когда происходит ошибка. Он распечатает трассировку стека, похожую на GDB, которую вы можете использовать, чтобы выяснить, в какой функции произошла ошибка.

person steventrouble    schedule 10.05.2013

Функция load в clisp имеет параметр :echo, см. примечания по реализации. Когда вы используете эту опцию, ваши файлы отображаются на выходе. Следовательно, когда возникает ошибка, вы можете увидеть соответствующий код. Для вашего случая выражение будет таким:

(load 'file.lisp :echo t)

Могут быть полезны некоторые дополнительные параметры, такие как :verbose и :print, и в этом случае выражение будет таким:

(load 'file.lisp :verbose t :print t :echo t)
person LuisR    schedule 29.06.2020