Отладка программ на Lisp
Существует несколько способов найти и исследовать проблемы в программе на языке Emacs Lisp.
- Если проблема возникает при запуске программы, вы можете использовать встроенный отладчик Emacs Lisp, чтобы приостановить интерпретатор Lisp, и проверить и/или изменить его внутреннее состояние.
- Вы можете использовать Edebug, отладчик на уровне исходного кода для Emacs Lisp.
- Вы можете проследить выполнение функций, участвующих в проблеме, используя средства отслеживания, предоставляемые пакетом trace.el. Этот пакет предоставляет функции
trace-function-foregroundиtrace-function-backgroundдля отслеживания вызовов функций, иtrace-valuesдля добавления значений выбранных переменных в трассировку. Подробности см. в документации этих средств в trace.el. - Если синтаксическая ошибка препятствует чтению программы Lisp, вы можете найти её, используя команды редактирования Lisp.
- Вы можете посмотреть сообщения об ошибках и предупреждениях, созданные байт-компилятором при компиляции программы. См. Ошибки компилятора.
- Вы можете использовать пакет Testcover для выполнения тестирования покрытия кода программы.
- Вы можете использовать пакет ERT для написания регрессионных тестов для программы. См. руководство по ERT в ERT: Регрессионное тестирование Emacs Lisp.
- Вы можете профилировать программу, чтобы получить подсказки о том, как сделать её более эффективной.
Другие полезные инструменты для отладки проблем с вводом и выводом — файл dribble (см. Ввод с терминала) и функция open-termscript (см. Вывод на терминал).
| • Отладчик | Отладчик для интерпретатора Emacs Lisp. | |
| • Edebug | Отладчик Emacs Lisp на уровне исходного кода. | |
| • Синтаксические ошибки | Как находить синтаксические ошибки. | |
| • Покрытие тестами | Обеспечение проверки всех ветвей вашего кода. | |
| • Профилирование | Измерение ресурсов, используемых вашим кодом. |
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Debugging.html