Отладка кода на Лиспе - PullRequest
8 голосов
/ 15 июля 2010

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

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

Ответы [ 5 ]

4 голосов
/ 16 июля 2010

Так как clojure был помечен в вопросе, я приведу нашу точку зрения.

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

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

4 голосов
/ 16 июля 2010

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

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

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

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

3 голосов
/ 15 июля 2010

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

2 голосов
/ 16 июля 2010

В чем-то, что я бы назвал подходами, «традиционным набором методов отладки Лиспа» являются:

  • Отладка распечаток
  • Функция трассировки (каждый вызов отслеживаемой функции печатается с отступом, соответствующим глубине вызова, по возвращении значение печатается).
  • Явный вызов отладчика в изображении
  • Завершение в отладчике изображения из-за ошибки (например, при попытке добавить целое число и символ)
0 голосов
/ 15 июля 2010

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

...