Вывод ошибки 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)