Отладка кода Lisp

Во время веб-поиска я нашел следующий комментарий: Традиционные методы отладки Lisp могут все еще использоваться.

  • Что традиционные отлаживают методы?
  • Обычно, какие инструменты используются для отладки шепелявости (с/без emacs)?

7
задан Rainer Joswig 15 July 2010 в 22:35
поделиться

5 ответов

Я не знаю, что конкретно имел в виду Билл, но IME:

Обычно к вашему редактору подключен работающий экземпляр. Вы можете скомпилировать функции немедленно, чтобы вставить их в работающий образ - поскольку у Lisp есть собственный компилятор, вы просто указываете работающему изображению прочитать и скомпилировать небольшой фрагмент текста. Или вы можете запускать функции напрямую, чтобы увидеть, что они делают.

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

Основное различие между Lisp и другими высокоуровневыми компилируемыми языками состоит в том, что в Lisp вы в основном всегда пишете код с подключенным отладчиком.

3
ответ дан 7 December 2019 в 01:15
поделиться

Поскольку в вопросе было отмечено тегом clojure, я выскажу нашу точку зрения.

Файлы классов, сгенерированные компилятором clojure, включают информацию об отладке на основе строк и методов, поэтому любой отладчик java будет напрямую взаимодействовать с кодом clojure, включая точки останова и проверку объектов.

Если вы используете emacs / slime в качестве среды разработки, недавно была включена интеграция с отладчиком slime. Поскольку документация немного скудна, вероятно, лучше проверить объем поддержки напрямую на github.

3
ответ дан 7 December 2019 в 01:15
поделиться

В том, что я бы назвал "традиционным набором методов отладки Lisp", есть:

  • Распечатки отладки
  • Трассировка функций (каждое обращение к трассируемой функции печатается с отступом, соответствующим глубине вызова, при возврате печатается возвращаемое выводится значение).
  • Явный вызов встроенного отладчика
  • Попадание в встроенный отладчик из-за ошибки (например, при попытке сложить целое число и символ)
2
ответ дан 7 December 2019 в 01:15
поделиться

В основном это такие вещи, как добавление кода для вывода значений в процессе работы, чтобы вы могли видеть, что происходит.

0
ответ дан 7 December 2019 в 01:15
поделиться

Запустите edebug-defun в emacs, и вы увидите, что lisp - это магия.

2
ответ дан 7 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: