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

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

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

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

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

Спасибо!

2 ответа

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

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

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

(load 'file.lisp :echo t)

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

(load 'file.lisp :verbose t :print t :echo t)
Другие вопросы по тегам