Использование отладчика
При входе в отладчик в одном окне отображается ранее выбранный буфер, а в другом — буфер с именем *Backtrace*. Буфер трассировки содержит по одной строке для каждого уровня выполняющихся в данный момент функций Lisp. В начале этого буфера находится сообщение с описанием причины вызова отладчика (например, сообщение об ошибке и связанные с ней данные, если отладчик был вызван из-за ошибки).
Буфер трассировки доступен только для чтения и использует специальный основной режим — режим отладчика, в котором буквам назначены команды отладчика. Доступны обычные команды редактирования Emacs; поэтому можно переключать окна, чтобы просмотреть буфер, редактировавшийся в момент ошибки, переключать буферы, открывать файлы и выполнять любые другие действия по редактированию. Однако отладчик представляет собой рекурсивный уровень редактирования (см. Рекурсивное редактирование), и после завершения работы с ним рекомендуется вернуться к буферу трассировки и выйти из отладчика (командой q). Выход из отладчика завершает рекурсивное редактирование и скрывает буфер трассировки. (Можно настроить действие команды q над буфером трассировки, задав переменную debugger-bury-or-kill. Например, задайте ей значение kill, если предпочитаете уничтожать буфер, а не скрывать его. Дополнительные возможности описаны в документации к этой переменной.)
При входе в отладчик значение переменной debug-on-error временно задаётся в соответствии с eval-expression-debug-on-error. Если последняя переменная не равна nil, значение debug-on-error временно будет установлено в t. Однако дальнейшие ошибки, возникающие во время отладки, по умолчанию не вызовут повторный запуск отладчика, поскольку inhibit-debugger также будет привязана к значению, не равному nil.
Сам отладчик необходимо запускать в байт-компилированном виде, поскольку он делает предположения о состоянии интерпретатора Lisp. Эти предположения неверны, если отладчик работает в интерпретируемом режиме.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Using-Debugger.html